{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Examples for lolviz\n",
    "\n",
    "## Install\n",
    "If on mac, I had to do this:\n",
    "\n",
    "```bash\n",
    "$ brew install graphviz  # had to upgrade graphviz on el capitan\n",
    "```\n",
    "\n",
    "Then\n",
    "\n",
    "```bash\n",
    "$ pip install lolviz\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Sample visualizations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from lolviz import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"88pt\" height=\"88pt\"\n",
       " viewBox=\"0.00 0.00 88.00 88.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 84)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-84 84,-84 84,4 -4,4\"/>\n",
       "<!-- node140546768036544 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140546768036544</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"80,-80 0,-80 0,0 80,0 80,-80\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-65 1,-79 13,-79 13,-65 1,-65\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"13,-65 13,-79 \"/>\n",
       "<text text-anchor=\"start\" x=\"2\" y=\"-69.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">0 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"13,-65 13,-79 79,-79 79,-65 13,-65\"/>\n",
       "<text text-anchor=\"start\" x=\"14\" y=\"-69.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;2016&#45;08&#45;12&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-63 1,-65 79,-65 79,-63 1,-63\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-49 1,-63 13,-63 13,-49 1,-49\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"13,-49 13,-63 \"/>\n",
       "<text text-anchor=\"start\" x=\"2\" y=\"-53.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">1 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"13,-49 13,-63 79,-63 79,-49 13,-49\"/>\n",
       "<text text-anchor=\"start\" x=\"15.5\" y=\"-53.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> 107.779999</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-47 1,-49 79,-49 79,-47 1,-47\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-33 1,-47 13,-47 13,-33 1,-33\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"13,-33 13,-47 \"/>\n",
       "<text text-anchor=\"start\" x=\"2\" y=\"-37.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">2 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"13,-33 13,-47 79,-47 79,-33 13,-33\"/>\n",
       "<text text-anchor=\"start\" x=\"15.5\" y=\"-37.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> 108.440002</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-31 1,-33 79,-33 79,-31 1,-31\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-17 1,-31 13,-31 13,-17 1,-17\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"13,-17 13,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"2\" y=\"-21.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">3 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"13,-17 13,-31 79,-31 79,-17 13,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"15.5\" y=\"-21.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> 107.779999</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-15 1,-17 79,-17 79,-15 1,-15\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-1 1,-15 13,-15 13,-1 1,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"13,-1 13,-15 \"/>\n",
       "<text text-anchor=\"start\" x=\"2\" y=\"-5.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">4 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"13,-1 13,-15 79,-15 79,-1 13,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"27.5\" y=\"-5.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> 108.18</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd398352b80>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "objviz([u'2016-08-12',107.779999,108.440002,107.779999,108.18])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"266pt\" height=\"159pt\"\n",
       " viewBox=\"0.00 0.00 266.00 159.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 155)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-155 262,-155 262,4 -4,4\"/>\n",
       "<!-- node140547309261824 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547309261824</title>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"14,-112 0,-112 0,-78 14,-78 14,-112\"/>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-95 1,-111 13,-111 13,-95 1,-95\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-95 13,-95 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-100.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-79 1,-95 13,-95 13,-79 1,-79\"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-84.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "</g>\n",
       "<!-- node140546768312384 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>node140546768312384</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"258,-151 36,-151 36,-119 258,-119 258,-151\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"37,-138 37,-150 71,-150 71,-138 37,-138\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"37,-138 71,-138 71,-150 \"/>\n",
       "<text text-anchor=\"start\" x=\"51\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"71,-138 71,-150 108,-150 108,-138 71,-138\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"71,-138 108,-138 108,-150 \"/>\n",
       "<text text-anchor=\"start\" x=\"86.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-138 108,-150 142,-150 142,-138 108,-138\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"108,-138 142,-138 142,-150 \"/>\n",
       "<text text-anchor=\"start\" x=\"122\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"142,-138 142,-150 173,-150 173,-138 142,-138\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"142,-138 173,-138 173,-150 \"/>\n",
       "<text text-anchor=\"start\" x=\"154.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"173,-138 173,-150 212,-150 212,-138 173,-138\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"173,-138 212,-138 212,-150 \"/>\n",
       "<text text-anchor=\"start\" x=\"189.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">4</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"212,-138 212,-150 257,-150 257,-138 212,-138\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"212,-138 257,-138 \"/>\n",
       "<text text-anchor=\"start\" x=\"231.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">5</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"37,-120 37,-138 71,-138 71,-120 37,-120\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"71,-120 71,-138 \"/>\n",
       "<text text-anchor=\"start\" x=\"40\" y=\"-126.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;Date&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"71,-120 71,-138 108,-138 108,-120 71,-120\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"108,-120 108,-138 \"/>\n",
       "<text text-anchor=\"start\" x=\"74\" y=\"-126.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;Open&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-120 108,-138 142,-138 142,-120 108,-120\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"142,-120 142,-138 \"/>\n",
       "<text text-anchor=\"start\" x=\"111\" y=\"-126.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;High&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"142,-120 142,-138 173,-138 173,-120 142,-120\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"173,-120 173,-138 \"/>\n",
       "<text text-anchor=\"start\" x=\"145\" y=\"-126.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;Low&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"173,-120 173,-138 212,-138 212,-120 173,-120\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"212,-120 212,-138 \"/>\n",
       "<text text-anchor=\"start\" x=\"176\" y=\"-126.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;Close&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"212,-120 212,-138 257,-138 257,-120 212,-120\"/>\n",
       "<text text-anchor=\"start\" x=\"214\" y=\"-126.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;Volume&#39;</text>\n",
       "</g>\n",
       "<!-- node140547309261824&#45;&gt;node140546768312384 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>node140547309261824:0&#45;&gt;node140546768312384:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-103C29.64,-103 20.83,-129.28 31.88,-134.21\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"31.81,-135.62 36,-135 32.34,-132.87 31.81,-135.62\"/>\n",
       "</g>\n",
       "<!-- node140546768348608 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>node140546768348608</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"187,-112 107,-112 107,0 187,0 187,-112\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-97 108,-111 120,-111 120,-97 108,-97\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"120,-97 120,-111 \"/>\n",
       "<text text-anchor=\"start\" x=\"109\" y=\"-101.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">0 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"120,-97 120,-111 186,-111 186,-97 120,-97\"/>\n",
       "<text text-anchor=\"start\" x=\"121\" y=\"-101.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;2016&#45;08&#45;12&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-95 108,-97 186,-97 186,-95 108,-95\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-81 108,-95 120,-95 120,-81 108,-81\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"120,-81 120,-95 \"/>\n",
       "<text text-anchor=\"start\" x=\"109\" y=\"-85.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">1 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"120,-81 120,-95 186,-95 186,-81 120,-81\"/>\n",
       "<text text-anchor=\"start\" x=\"122.5\" y=\"-85.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> 107.779999</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-79 108,-81 186,-81 186,-79 108,-79\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-65 108,-79 120,-79 120,-65 108,-65\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"120,-65 120,-79 \"/>\n",
       "<text text-anchor=\"start\" x=\"109\" y=\"-69.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">2 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"120,-65 120,-79 186,-79 186,-65 120,-65\"/>\n",
       "<text text-anchor=\"start\" x=\"122.5\" y=\"-69.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> 108.440002</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-63 108,-65 186,-65 186,-63 108,-63\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-49 108,-63 120,-63 120,-49 108,-49\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"120,-49 120,-63 \"/>\n",
       "<text text-anchor=\"start\" x=\"109\" y=\"-53.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">3 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"120,-49 120,-63 186,-63 186,-49 120,-49\"/>\n",
       "<text text-anchor=\"start\" x=\"122.5\" y=\"-53.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> 107.779999</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-47 108,-49 186,-49 186,-47 108,-47\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-33 108,-47 120,-47 120,-33 108,-33\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"120,-33 120,-47 \"/>\n",
       "<text text-anchor=\"start\" x=\"109\" y=\"-37.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">4 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"120,-33 120,-47 186,-47 186,-33 120,-33\"/>\n",
       "<text text-anchor=\"start\" x=\"134.5\" y=\"-37.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> 108.18</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-31 108,-33 186,-33 186,-31 108,-31\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-17 108,-31 120,-31 120,-17 108,-17\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"120,-17 120,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"109\" y=\"-21.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">5 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"120,-17 120,-31 186,-31 186,-17 120,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"127\" y=\"-21.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> 18612300</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-15 108,-17 186,-17 186,-15 108,-15\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-1 108,-15 120,-15 120,-1 108,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"120,-1 120,-15 \"/>\n",
       "<text text-anchor=\"start\" x=\"109\" y=\"-5.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">6 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"120,-1 120,-15 186,-15 186,-1 120,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"134.5\" y=\"-5.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> 108.18</text>\n",
       "</g>\n",
       "<!-- node140547309261824&#45;&gt;node140546768348608 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>node140547309261824:1&#45;&gt;node140546768348608:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-87C55.63,-87 62.4,-58.14 101.58,-56.11\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"102.04,-57.5 106,-56 101.97,-54.7 102.04,-57.5\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b8711370>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "table = [\n",
    "    ['Date','Open','High','Low','Close','Volume'],\n",
    "    ['2016-08-12',107.779999,108.440002,107.779999,108.18,18612300,108.18],\n",
    "]\n",
    "objviz(table)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"60pt\" height=\"90pt\"\n",
       " viewBox=\"0.00 0.00 60.00 90.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 86)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-86 56,-86 56,4 -4,4\"/>\n",
       "<!-- node140547309252864 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547309252864</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"52,-82 0,-82 0,0 52,0 52,-82\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"2,-66 2,-80 24,-80 24,-66 2,-66\"/>\n",
       "<text text-anchor=\"start\" x=\"8\" y=\"-70.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">97 </text>\n",
       "<text text-anchor=\"start\" x=\"24\" y=\"-68.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">→</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"34,-66 34,-80 50,-80 50,-66 34,-66\"/>\n",
       "<text text-anchor=\"start\" x=\"35\" y=\"-70.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;a&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"2,-64 2,-66 50,-66 50,-64 2,-64\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"2,-50 2,-64 24,-64 24,-50 2,-50\"/>\n",
       "<text text-anchor=\"start\" x=\"8\" y=\"-54.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">98 </text>\n",
       "<text text-anchor=\"start\" x=\"24\" y=\"-52.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">→</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"34,-50 34,-64 50,-64 50,-50 34,-50\"/>\n",
       "<text text-anchor=\"start\" x=\"35\" y=\"-54.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;b&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"2,-48 2,-50 50,-50 50,-48 2,-48\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"2,-34 2,-48 24,-48 24,-34 2,-34\"/>\n",
       "<text text-anchor=\"start\" x=\"8\" y=\"-38.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">99 </text>\n",
       "<text text-anchor=\"start\" x=\"24\" y=\"-36.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">→</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"34,-34 34,-48 50,-48 50,-34 34,-34\"/>\n",
       "<text text-anchor=\"start\" x=\"35\" y=\"-38.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;c&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"2,-32 2,-34 50,-34 50,-32 2,-32\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"2,-18 2,-32 24,-32 24,-18 2,-18\"/>\n",
       "<text text-anchor=\"start\" x=\"2\" y=\"-22.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">100 </text>\n",
       "<text text-anchor=\"start\" x=\"24\" y=\"-20.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">→</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"34,-18 34,-32 50,-32 50,-18 34,-18\"/>\n",
       "<text text-anchor=\"start\" x=\"35\" y=\"-22.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;d&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"2,-16 2,-18 50,-18 50,-16 2,-16\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"2,-2 2,-16 24,-16 24,-2 2,-2\"/>\n",
       "<text text-anchor=\"start\" x=\"2\" y=\"-6.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">101 </text>\n",
       "<text text-anchor=\"start\" x=\"24\" y=\"-4.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">→</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"34,-2 34,-16 50,-16 50,-2 34,-2\"/>\n",
       "<text text-anchor=\"start\" x=\"35\" y=\"-6.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;e&#39;</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b87111f0>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d = dict([(c,chr(c)) for c in range(ord('a'),ord('f'))])\n",
    "objviz(d)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"67pt\" height=\"88pt\"\n",
       " viewBox=\"0.00 0.00 67.00 88.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 84)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-84 63,-84 63,4 -4,4\"/>\n",
       "<!-- node140547309244720 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547309244720</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"59,-80 0,-80 0,0 59,0 59,-80\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-65 1.5,-79 13.5,-79 13.5,-65 1.5,-65\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"13.5,-65 13.5,-79 \"/>\n",
       "<text text-anchor=\"start\" x=\"2.5\" y=\"-69.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">0 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"13.5,-65 13.5,-79 58.5,-79 58.5,-65 13.5,-65\"/>\n",
       "<text text-anchor=\"start\" x=\"17.5\" y=\"-69.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> 97→&#39;a&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-63 1.5,-65 58.5,-65 58.5,-63 1.5,-63\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-49 1.5,-63 13.5,-63 13.5,-49 1.5,-49\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"13.5,-49 13.5,-63 \"/>\n",
       "<text text-anchor=\"start\" x=\"2.5\" y=\"-53.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">1 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"13.5,-49 13.5,-63 58.5,-63 58.5,-49 13.5,-49\"/>\n",
       "<text text-anchor=\"start\" x=\"17.5\" y=\"-53.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> 98→&#39;b&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-47 1.5,-49 58.5,-49 58.5,-47 1.5,-47\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-33 1.5,-47 13.5,-47 13.5,-33 1.5,-33\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"13.5,-33 13.5,-47 \"/>\n",
       "<text text-anchor=\"start\" x=\"2.5\" y=\"-37.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">2 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"13.5,-33 13.5,-47 58.5,-47 58.5,-33 13.5,-33\"/>\n",
       "<text text-anchor=\"start\" x=\"17.5\" y=\"-37.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> 99→&#39;c&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-31 1.5,-33 58.5,-33 58.5,-31 1.5,-31\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-17 1.5,-31 13.5,-31 13.5,-17 1.5,-17\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"13.5,-17 13.5,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"2.5\" y=\"-21.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">3 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"13.5,-17 13.5,-31 58.5,-31 58.5,-17 13.5,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"14.5\" y=\"-21.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> 100→&#39;d&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-15 1.5,-17 58.5,-17 58.5,-15 1.5,-15\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-1 1.5,-15 13.5,-15 13.5,-1 1.5,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"13.5,-1 13.5,-15 \"/>\n",
       "<text text-anchor=\"start\" x=\"2.5\" y=\"-5.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">4 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"13.5,-1 13.5,-15 58.5,-15 58.5,-1 13.5,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"14.5\" y=\"-5.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> 101→&#39;e&#39;</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b8711700>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tuplelist = d.items()\n",
    "listviz(tuplelist)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"70pt\" height=\"88pt\"\n",
       " viewBox=\"0.00 0.00 70.00 88.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 84)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-84 66,-84 66,4 -4,4\"/>\n",
       "<!-- node140547309245536 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547309245536</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"62,-80 0,-80 0,0 62,0 62,-80\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-65 1,-79 13,-79 13,-65 1,-65\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"13,-65 13,-79 \"/>\n",
       "<text text-anchor=\"start\" x=\"2\" y=\"-69.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">0 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"13,-65 13,-79 61,-79 61,-65 13,-65\"/>\n",
       "<text text-anchor=\"start\" x=\"17\" y=\"-69.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> (97, &#39;a&#39;)</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-63 1,-65 61,-65 61,-63 1,-63\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-49 1,-63 13,-63 13,-49 1,-49\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"13,-49 13,-63 \"/>\n",
       "<text text-anchor=\"start\" x=\"2\" y=\"-53.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">1 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"13,-49 13,-63 61,-63 61,-49 13,-49\"/>\n",
       "<text text-anchor=\"start\" x=\"17\" y=\"-53.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> (98, &#39;b&#39;)</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-47 1,-49 61,-49 61,-47 1,-47\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-33 1,-47 13,-47 13,-33 1,-33\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"13,-33 13,-47 \"/>\n",
       "<text text-anchor=\"start\" x=\"2\" y=\"-37.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">2 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"13,-33 13,-47 61,-47 61,-33 13,-33\"/>\n",
       "<text text-anchor=\"start\" x=\"17.5\" y=\"-37.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> (99, &#39;c&#39;)</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-31 1,-33 61,-33 61,-31 1,-31\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-17 1,-31 13,-31 13,-17 1,-17\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"13,-17 13,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"2\" y=\"-21.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">3 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"13,-17 13,-31 61,-31 61,-17 13,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"14\" y=\"-21.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> (100, &#39;d&#39;)</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-15 1,-17 61,-17 61,-15 1,-15\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-1 1,-15 13,-15 13,-1 1,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"13,-1 13,-15 \"/>\n",
       "<text text-anchor=\"start\" x=\"2\" y=\"-5.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">4 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"13,-1 13,-15 61,-15 61,-1 13,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"14\" y=\"-5.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> (101, &#39;e&#39;)</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b8711be0>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tuplelist = d.items()\n",
    "listviz(tuplelist, showassoc=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"86pt\" height=\"196pt\"\n",
       " viewBox=\"0.00 0.00 86.00 196.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 192)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-192 82,-192 82,4 -4,4\"/>\n",
       "<!-- node140547309210880 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547309210880</title>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"14,-135 0,-135 0,-53 14,-53 14,-135\"/>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-118 1,-134 13,-134 13,-118 1,-118\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-118 13,-118 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-123.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-102 1,-118 13,-118 13,-102 1,-102\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-102 13,-102 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-107.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-86 1,-102 13,-102 13,-86 1,-86\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-86 13,-86 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-91.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-70 1,-86 13,-86 13,-70 1,-70\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-70 13,-70 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-75.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-54 1,-70 13,-70 13,-54 1,-54\"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-59.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">4</text>\n",
       "</g>\n",
       "<!-- node140547309123648 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>node140547309123648</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"75,-188 39,-188 39,-156 75,-156 75,-188\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"40,-175 40,-187 59,-187 59,-175 40,-175\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"40,-175 59,-175 59,-187 \"/>\n",
       "<text text-anchor=\"start\" x=\"46.5\" y=\"-178.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"59,-175 59,-187 74,-187 74,-175 59,-175\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"59,-175 74,-175 \"/>\n",
       "<text text-anchor=\"start\" x=\"63.5\" y=\"-178.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"40,-157 40,-175 59,-175 59,-157 40,-157\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"59,-157 59,-175 \"/>\n",
       "<text text-anchor=\"start\" x=\"43\" y=\"-163.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">97</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"59,-157 59,-175 74,-175 74,-157 59,-157\"/>\n",
       "<text text-anchor=\"start\" x=\"61\" y=\"-163.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;a&#39;</text>\n",
       "</g>\n",
       "<!-- node140547309210880&#45;&gt;node140547309123648 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>node140547309210880:0&#45;&gt;node140547309123648:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M7,-135C7,-154.94 15.25,-169.78 33.65,-171.77\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"33.93,-173.19 38,-172 34.08,-170.39 33.93,-173.19\"/>\n",
       "</g>\n",
       "<!-- node140547308974272 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>node140547308974272</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"75,-149 39,-149 39,-117 75,-117 75,-149\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"40,-136 40,-148 59,-148 59,-136 40,-136\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"40,-136 59,-136 59,-148 \"/>\n",
       "<text text-anchor=\"start\" x=\"46.5\" y=\"-139.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"59,-136 59,-148 74,-148 74,-136 59,-136\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"59,-136 74,-136 \"/>\n",
       "<text text-anchor=\"start\" x=\"63.5\" y=\"-139.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"40,-118 40,-136 59,-136 59,-118 40,-118\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"59,-118 59,-136 \"/>\n",
       "<text text-anchor=\"start\" x=\"43\" y=\"-124.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">98</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"59,-118 59,-136 74,-136 74,-118 59,-118\"/>\n",
       "<text text-anchor=\"start\" x=\"61\" y=\"-124.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;b&#39;</text>\n",
       "</g>\n",
       "<!-- node140547309210880&#45;&gt;node140547308974272 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>node140547309210880:1&#45;&gt;node140547308974272:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-110C27.16,-110 24.2,-128.24 33.83,-132.23\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"33.81,-133.66 38,-133 34.32,-130.9 33.81,-133.66\"/>\n",
       "</g>\n",
       "<!-- node140547308983680 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>node140547308983680</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"74.5,-110 39.5,-110 39.5,-78 74.5,-78 74.5,-110\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"41,-97 41,-109 60,-109 60,-97 41,-97\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"41,-97 60,-97 60,-109 \"/>\n",
       "<text text-anchor=\"start\" x=\"47.5\" y=\"-100.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"60,-97 60,-109 74,-109 74,-97 60,-97\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"60,-97 74,-97 \"/>\n",
       "<text text-anchor=\"start\" x=\"64\" y=\"-100.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"41,-79 41,-97 60,-97 60,-79 41,-79\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"60,-79 60,-97 \"/>\n",
       "<text text-anchor=\"start\" x=\"44\" y=\"-85.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">99</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"60,-79 60,-97 74,-97 74,-79 60,-79\"/>\n",
       "<text text-anchor=\"start\" x=\"62\" y=\"-85.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;c&#39;</text>\n",
       "</g>\n",
       "<!-- node140547309210880&#45;&gt;node140547308983680 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>node140547309210880:2&#45;&gt;node140547308983680:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-94C23.17,-94 26.43,-94 33.93,-94\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"34,-95.4 38,-94 34,-92.6 34,-95.4\"/>\n",
       "</g>\n",
       "<!-- node140547308977856 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>node140547308977856</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"78,-71 36,-71 36,-39 78,-39 78,-71\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"37,-58 37,-70 62,-70 62,-58 37,-58\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"37,-58 62,-58 62,-70 \"/>\n",
       "<text text-anchor=\"start\" x=\"46.5\" y=\"-61.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"62,-58 62,-70 77,-70 77,-58 62,-58\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"62,-58 77,-58 \"/>\n",
       "<text text-anchor=\"start\" x=\"66.5\" y=\"-61.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"37,-40 37,-58 62,-58 62,-40 37,-40\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"62,-40 62,-58 \"/>\n",
       "<text text-anchor=\"start\" x=\"40\" y=\"-46.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">100</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"62,-40 62,-58 77,-58 77,-40 62,-40\"/>\n",
       "<text text-anchor=\"start\" x=\"64\" y=\"-46.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;d&#39;</text>\n",
       "</g>\n",
       "<!-- node140547309210880&#45;&gt;node140547308977856 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>node140547309210880:3&#45;&gt;node140547308977856:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-78C26.6,-78 22.99,-59.76 32.04,-55.77\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"32.34,-57.13 36,-55 31.81,-54.38 32.34,-57.13\"/>\n",
       "</g>\n",
       "<!-- node140547308965184 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>node140547308965184</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"78,-32 36,-32 36,0 78,0 78,-32\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"37,-19 37,-31 62,-31 62,-19 37,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"37,-19 62,-19 62,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"46.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"62,-19 62,-31 77,-31 77,-19 62,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"62,-19 77,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"66.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"37,-1 37,-19 62,-19 62,-1 37,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"62,-1 62,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"40\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">101</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"62,-1 62,-19 77,-19 77,-1 62,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"64\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;e&#39;</text>\n",
       "</g>\n",
       "<!-- node140547309210880&#45;&gt;node140547308965184 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>node140547309210880:4&#45;&gt;node140547308965184:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M7,-53C7,-33.58 14.01,-18.29 31.78,-16.23\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"32.08,-17.62 36,-16 31.93,-14.82 32.08,-17.62\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b8711d90>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "objviz(tuplelist)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"178pt\" height=\"40pt\"\n",
       " viewBox=\"0.00 0.00 178.00 40.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 36)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-36 174,-36 174,4 -4,4\"/>\n",
       "<!-- node140546768350784 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140546768350784</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"170,-32 0,-32 0,0 170,0 170,-32\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-19 1,-31 24,-31 24,-19 1,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1,-19 24,-19 24,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"9.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"24,-19 24,-31 47,-31 47,-19 24,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"24,-19 47,-19 47,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"32.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"47,-19 47,-31 70,-31 70,-19 47,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"47,-19 70,-19 70,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"55.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"70,-19 70,-31 93,-31 93,-19 70,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"70,-19 93,-19 93,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"78.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"93,-19 93,-31 148,-31 148,-19 93,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"93,-19 148,-19 148,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"117.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">4</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"148,-19 148,-31 169,-31 169,-19 148,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"148,-19 169,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"155.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">5</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-1 1,-19 24,-19 24,-1 1,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"24,-1 24,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;11&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"24,-1 24,-19 47,-19 47,-1 24,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"47,-1 47,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"27\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;12&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"47,-1 47,-19 70,-19 70,-1 47,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"70,-1 70,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"50\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;13&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"70,-1 70,-19 93,-19 93,-1 70,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"93,-1 93,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"73\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;14&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"93,-1 93,-19 148,-19 148,-1 93,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"148,-1 148,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"96\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">[&#39;a&#39;, &#39;b&#39;, &#39;c&#39;]</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"148,-1 148,-19 169,-19 169,-1 148,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"150\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;16&#39;</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd398352fd0>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "T = ['11','12','13','14',['a','b','c'],'16']\n",
    "lolviz(T)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"62pt\" height=\"40pt\"\n",
       " viewBox=\"0.00 0.00 62.00 40.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 36)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-36 58,-36 58,4 -4,4\"/>\n",
       "<!-- node140547309304320 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547309304320</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"54,-32 0,-32 0,0 54,0 54,-32\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-19 1,-31 20,-31 20,-19 1,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1,-19 20,-19 20,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"7.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"20,-19 20,-31 53,-31 53,-19 20,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"20,-19 53,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"33.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-1 1,-19 20,-19 20,-1 1,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"20,-1 20,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;hi&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"20,-1 20,-19 53,-19 53,-1 20,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"22\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;mom&#39;</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b8711ca0>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "objviz({'hi','mom'})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"139pt\" height=\"43pt\"\n",
       " viewBox=\"0.00 0.00 139.00 43.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 39)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-39 135,-39 135,4 -4,4\"/>\n",
       "<!-- node140547309256192 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547309256192</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"85,-34 0,-34 0,0 85,0 85,-34\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"2.5,-18 2.5,-32 58.5,-32 58.5,-18 2.5,-18\"/>\n",
       "<text text-anchor=\"start\" x=\"2.5\" y=\"-22.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;superuser&#39; </text>\n",
       "<text text-anchor=\"start\" x=\"58.5\" y=\"-20.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">→</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"68.5,-18 68.5,-32 83.5,-32 83.5,-18 68.5,-18\"/>\n",
       "<text text-anchor=\"start\" x=\"69.5\" y=\"-22.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"2.5,-16 2.5,-18 83.5,-18 83.5,-16 2.5,-16\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"2.5,-2 2.5,-16 58.5,-16 58.5,-2 2.5,-2\"/>\n",
       "<text text-anchor=\"start\" x=\"31.5\" y=\"-6.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;mgr&#39; </text>\n",
       "<text text-anchor=\"start\" x=\"58.5\" y=\"-4.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">→</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"68.5,-2 68.5,-16 83.5,-16 83.5,-2 68.5,-2\"/>\n",
       "<text text-anchor=\"start\" x=\"69.5\" y=\"-6.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "</g>\n",
       "<!-- node4460660888 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>node4460660888</title>\n",
       "<text text-anchor=\"start\" x=\"111\" y=\"-25.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">True</text>\n",
       "</g>\n",
       "<!-- node140547309256192&#45;&gt;node4460660888 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>node140547309256192:c&#45;&gt;node4460660888</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M81.06,-25.26C86.21,-25.65 96.03,-26.37 104.24,-26.98\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"79.1\" cy=\"-25.12\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"104.51,-28.4 108.61,-27.3 104.72,-25.61 104.51,-28.4\"/>\n",
       "</g>\n",
       "<!-- node4460661624 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>node4460661624</title>\n",
       "<text text-anchor=\"start\" x=\"109\" y=\"-4.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">False</text>\n",
       "</g>\n",
       "<!-- node140547309256192&#45;&gt;node4460661624 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>node140547309256192:c&#45;&gt;node4460661624</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M80.76,-8.84C85.5,-8.6 94.61,-8.16 102.62,-7.76\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"79.1\" cy=\"-8.92\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"103.01,-9.14 106.93,-7.55 102.87,-6.35 103.01,-9.14\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b87111c0>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "objviz({'superuser':True, 'mgr':False})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"73pt\" height=\"184pt\"\n",
       " viewBox=\"0.00 0.00 73.00 184.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 180)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-180 69,-180 69,4 -4,4\"/>\n",
       "<!-- node140547309272064 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547309272064</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"65,-176 0,-176 0,0 65,0 65,-176\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-161 1.5,-175 19.5,-175 19.5,-161 1.5,-161\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"19.5,-161 19.5,-175 \"/>\n",
       "<text text-anchor=\"start\" x=\"8.5\" y=\"-165.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">0 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"19.5,-161 19.5,-175 64.5,-175 64.5,-161 19.5,-161\"/>\n",
       "<text text-anchor=\"start\" x=\"23.5\" y=\"-165.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;elem5&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-159 1.5,-161 64.5,-161 64.5,-159 1.5,-159\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-145 1.5,-159 19.5,-159 19.5,-145 1.5,-145\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"19.5,-145 19.5,-159 \"/>\n",
       "<text text-anchor=\"start\" x=\"8.5\" y=\"-149.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">1 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"19.5,-145 19.5,-159 64.5,-159 64.5,-145 19.5,-145\"/>\n",
       "<text text-anchor=\"start\" x=\"20.5\" y=\"-149.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;elem18&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-143 1.5,-145 64.5,-145 64.5,-143 1.5,-143\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-129 1.5,-143 19.5,-143 19.5,-129 1.5,-129\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"19.5,-129 19.5,-143 \"/>\n",
       "<text text-anchor=\"start\" x=\"8.5\" y=\"-133.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">2 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"19.5,-129 19.5,-143 64.5,-143 64.5,-129 19.5,-129\"/>\n",
       "<text text-anchor=\"start\" x=\"23.5\" y=\"-133.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;elem8&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-127 1.5,-129 64.5,-129 64.5,-127 1.5,-127\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-113 1.5,-127 19.5,-127 19.5,-113 1.5,-113\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"19.5,-113 19.5,-127 \"/>\n",
       "<text text-anchor=\"start\" x=\"8.5\" y=\"-117.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">3 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"19.5,-113 19.5,-127 64.5,-127 64.5,-113 19.5,-113\"/>\n",
       "<text text-anchor=\"start\" x=\"20.5\" y=\"-117.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;elem15&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-111 1.5,-113 64.5,-113 64.5,-111 1.5,-111\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-97 1.5,-111 19.5,-111 19.5,-97 1.5,-97\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"19.5,-97 19.5,-111 \"/>\n",
       "<text text-anchor=\"start\" x=\"8.5\" y=\"-101.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">4 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"19.5,-97 19.5,-111 64.5,-111 64.5,-97 19.5,-97\"/>\n",
       "<text text-anchor=\"start\" x=\"20.5\" y=\"-101.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;elem12&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-95 1.5,-97 64.5,-97 64.5,-95 1.5,-95\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-81 1.5,-95 19.5,-95 19.5,-81 1.5,-81\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"19.5,-81 19.5,-95 \"/>\n",
       "<text text-anchor=\"start\" x=\"8.5\" y=\"-85.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">5 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"19.5,-81 19.5,-95 64.5,-95 64.5,-81 19.5,-81\"/>\n",
       "<text text-anchor=\"start\" x=\"20.5\" y=\"-85.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;elem19&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-79 1.5,-81 64.5,-81 64.5,-79 1.5,-79\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-65 1.5,-79 19.5,-79 19.5,-65 1.5,-65\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"19.5,-65 19.5,-79 \"/>\n",
       "<text text-anchor=\"start\" x=\"8.5\" y=\"-69.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">6 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"19.5,-65 19.5,-79 64.5,-79 64.5,-65 19.5,-65\"/>\n",
       "<text text-anchor=\"start\" x=\"20.5\" y=\"-69.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;elem11&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-63 1.5,-65 64.5,-65 64.5,-63 1.5,-63\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-49 1.5,-63 19.5,-63 19.5,-49 1.5,-49\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"19.5,-49 19.5,-63 \"/>\n",
       "<text text-anchor=\"start\" x=\"8.5\" y=\"-53.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">7 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"19.5,-49 19.5,-63 64.5,-63 64.5,-49 19.5,-49\"/>\n",
       "<text text-anchor=\"start\" x=\"23.5\" y=\"-53.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;elem1&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-47 1.5,-49 64.5,-49 64.5,-47 1.5,-47\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-33 1.5,-47 19.5,-47 19.5,-33 1.5,-33\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"19.5,-33 19.5,-47 \"/>\n",
       "<text text-anchor=\"start\" x=\"8.5\" y=\"-37.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">8 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"19.5,-33 19.5,-47 64.5,-47 64.5,-33 19.5,-33\"/>\n",
       "<text text-anchor=\"start\" x=\"20.5\" y=\"-37.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;elem10&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-31 1.5,-33 64.5,-33 64.5,-31 1.5,-31\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-17 1.5,-31 19.5,-31 19.5,-17 1.5,-17\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"19.5,-17 19.5,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"5.5\" y=\"-21.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">... </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"19.5,-17 19.5,-31 64.5,-31 64.5,-17 19.5,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"35.5\" y=\"-21.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> ...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-15 1.5,-17 64.5,-17 64.5,-15 1.5,-15\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-1 1.5,-15 19.5,-15 19.5,-1 1.5,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"19.5,-1 19.5,-15 \"/>\n",
       "<text text-anchor=\"start\" x=\"2.5\" y=\"-5.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">19 </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"19.5,-1 19.5,-15 64.5,-15 64.5,-1 19.5,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"23.5\" y=\"-5.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;elem6&#39;</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b8720580>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "objviz(set(['elem%d'%i for i in range(20)])) # long set shown vertically"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"289pt\" height=\"90pt\"\n",
       " viewBox=\"0.00 0.00 289.00 90.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 86)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-86 285,-86 285,4 -4,4\"/>\n",
       "<g id=\"clust1\" class=\"cluster\">\n",
       "<title>cluster1</title>\n",
       "</g>\n",
       "<!-- node140547309308560 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547309308560</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"168,-66 100,-66 100,-16 168,-16 168,-66\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"102,-50 102,-64 166,-64 166,-50 102,-50\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"102,-50 166,-50 \"/>\n",
       "<text text-anchor=\"start\" x=\"122\" y=\"-54.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">Node</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"102,-48 102,-50 166,-50 166,-48 102,-48\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"102,-34 102,-48 133,-48 133,-34 102,-34\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"133,-34 133,-48 \"/>\n",
       "<text text-anchor=\"start\" x=\"103\" y=\"-38.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">value </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"133,-34 133,-48 166,-48 166,-34 133,-34\"/>\n",
       "<text text-anchor=\"start\" x=\"134\" y=\"-38.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;parrt&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"102,-32 102,-34 166,-34 166,-32 102,-32\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"102,-18 102,-32 133,-32 133,-18 102,-18\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"133,-18 133,-32 \"/>\n",
       "<text text-anchor=\"start\" x=\"108\" y=\"-22.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">next </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"133,-18 133,-32 166,-32 166,-18 133,-18\"/>\n",
       "<text text-anchor=\"start\" x=\"134\" y=\"-22.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "</g>\n",
       "<!-- node140547309307408 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>node140547309307408</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"265,-66 190,-66 190,-16 265,-16 265,-66\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"192.5,-50 192.5,-64 263.5,-64 263.5,-50 192.5,-50\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"192.5,-50 263.5,-50 \"/>\n",
       "<text text-anchor=\"start\" x=\"216\" y=\"-54.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">Node</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"192.5,-48 192.5,-50 263.5,-50 263.5,-48 192.5,-48\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"192.5,-34 192.5,-48 223.5,-48 223.5,-34 192.5,-34\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"223.5,-34 223.5,-48 \"/>\n",
       "<text text-anchor=\"start\" x=\"193.5\" y=\"-38.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">value </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"223.5,-34 223.5,-48 263.5,-48 263.5,-34 223.5,-34\"/>\n",
       "<text text-anchor=\"start\" x=\"224.5\" y=\"-38.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;tombu&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"192.5,-32 192.5,-34 263.5,-34 263.5,-32 192.5,-32\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"192.5,-18 192.5,-32 223.5,-32 223.5,-18 192.5,-18\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"223.5,-18 223.5,-32 \"/>\n",
       "<text text-anchor=\"start\" x=\"198.5\" y=\"-22.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">next </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"223.5,-18 223.5,-32 263.5,-32 263.5,-18 223.5,-18\"/>\n",
       "<text text-anchor=\"start\" x=\"224.5\" y=\"-22.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "</g>\n",
       "<!-- node140547309308560&#45;&gt;node140547309307408 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>node140547309308560:c&#45;&gt;node140547309307408</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M154.34,-25.71C160.12,-26.93 172.61,-29.58 185.59,-32.33\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"152.57\" cy=\"-25.33\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"185.43,-33.73 189.63,-33.19 186.01,-30.99 185.43,-33.73\"/>\n",
       "</g>\n",
       "<!-- node140547309308512 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>node140547309308512</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"78,-66 16,-66 16,-16 78,-16 78,-66\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"18,-50 18,-64 76,-64 76,-50 18,-50\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"18,-50 76,-50 \"/>\n",
       "<text text-anchor=\"start\" x=\"35\" y=\"-54.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">Node</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"18,-48 18,-50 76,-50 76,-48 18,-48\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"18,-34 18,-48 49,-48 49,-34 18,-34\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"49,-34 49,-48 \"/>\n",
       "<text text-anchor=\"start\" x=\"19\" y=\"-38.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">value </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"49,-34 49,-48 76,-48 76,-34 49,-34\"/>\n",
       "<text text-anchor=\"start\" x=\"50\" y=\"-38.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;xue&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"18,-32 18,-34 76,-34 76,-32 18,-32\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"18,-18 18,-32 49,-32 49,-18 18,-18\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"49,-18 49,-32 \"/>\n",
       "<text text-anchor=\"start\" x=\"24\" y=\"-22.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">next </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"49,-18 49,-32 76,-32 76,-18 49,-18\"/>\n",
       "<text text-anchor=\"start\" x=\"50\" y=\"-22.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "</g>\n",
       "<!-- node140547309308512&#45;&gt;node140547309308560 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>node140547309308512:c&#45;&gt;node140547309308560</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M67.48,-25.81C72.95,-27.08 84.15,-29.67 95.77,-32.37\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"65.56\" cy=\"-25.36\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"95.5,-33.74 99.71,-33.28 96.13,-31.01 95.5,-33.74\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b87209a0>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# test linked list node\n",
    "class Node:\n",
    "    def __init__(self, value, next=None):\n",
    "        self.value = value\n",
    "        self.next = next\n",
    "\n",
    "head = Node('tombu')\n",
    "head = Node('parrt', head)\n",
    "head = Node(\"xue\", head)\n",
    "objviz(head)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"113pt\" height=\"115pt\"\n",
       " viewBox=\"0.00 0.00 113.00 115.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 111)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-111 109,-111 109,4 -4,4\"/>\n",
       "<!-- node140546768475648 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140546768475648</title>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"14,-70 0,-70 0,-36 14,-36 14,-70\"/>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-53 1,-69 13,-69 13,-53 1,-53\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-53 13,-53 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-58.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-37 1,-53 13,-53 13,-37 1,-37\"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-42.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "</g>\n",
       "<!-- node140547309307648 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>node140547309307648</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"104.5,-107 36.5,-107 36.5,-57 104.5,-57 104.5,-107\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"38.5,-91 38.5,-105 102.5,-105 102.5,-91 38.5,-91\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"38.5,-91 102.5,-91 \"/>\n",
       "<text text-anchor=\"start\" x=\"58.5\" y=\"-95.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">Node</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"38.5,-89 38.5,-91 102.5,-91 102.5,-89 38.5,-89\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"38.5,-75 38.5,-89 69.5,-89 69.5,-75 38.5,-75\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"69.5,-75 69.5,-89 \"/>\n",
       "<text text-anchor=\"start\" x=\"39.5\" y=\"-79.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">value </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"69.5,-75 69.5,-89 102.5,-89 102.5,-75 69.5,-75\"/>\n",
       "<text text-anchor=\"start\" x=\"70.5\" y=\"-79.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;parrt&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"38.5,-73 38.5,-75 102.5,-75 102.5,-73 38.5,-73\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"38.5,-59 38.5,-73 69.5,-73 69.5,-59 38.5,-59\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"69.5,-59 69.5,-73 \"/>\n",
       "<text text-anchor=\"start\" x=\"44.5\" y=\"-63.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">next </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"69.5,-59 69.5,-73 102.5,-73 102.5,-59 69.5,-59\"/>\n",
       "<text text-anchor=\"start\" x=\"70.5\" y=\"-63.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "</g>\n",
       "<!-- node140546768475648&#45;&gt;node140547309307648 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>node140546768475648:0&#45;&gt;node140547309307648:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-61C25.83,-61 23.45,-77.08 31.73,-81.1\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"31.8,-82.54 36,-82 32.38,-79.8 31.8,-82.54\"/>\n",
       "</g>\n",
       "<!-- node140547309306496 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>node140547309306496</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"105,-50 36,-50 36,0 105,0 105,-50\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"38.5,-34 38.5,-48 103.5,-48 103.5,-34 38.5,-34\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"38.5,-34 103.5,-34 \"/>\n",
       "<text text-anchor=\"start\" x=\"59\" y=\"-38.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">Node</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"38.5,-32 38.5,-34 103.5,-34 103.5,-32 38.5,-32\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"38.5,-18 38.5,-32 69.5,-32 69.5,-18 38.5,-18\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"69.5,-18 69.5,-32 \"/>\n",
       "<text text-anchor=\"start\" x=\"39.5\" y=\"-22.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">value </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"69.5,-18 69.5,-32 103.5,-32 103.5,-18 69.5,-18\"/>\n",
       "<text text-anchor=\"start\" x=\"70.5\" y=\"-22.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;mary&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"38.5,-16 38.5,-18 103.5,-18 103.5,-16 38.5,-16\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"38.5,-2 38.5,-16 69.5,-16 69.5,-2 38.5,-2\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"69.5,-2 69.5,-16 \"/>\n",
       "<text text-anchor=\"start\" x=\"44.5\" y=\"-6.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">next </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"69.5,-2 69.5,-16 103.5,-16 103.5,-2 69.5,-2\"/>\n",
       "<text text-anchor=\"start\" x=\"70.5\" y=\"-6.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "</g>\n",
       "<!-- node140546768475648&#45;&gt;node140547309306496 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>node140546768475648:1&#45;&gt;node140547309306496:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-45C25.56,-45 23.62,-29.69 31.8,-25.86\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"32.36,-27.17 36,-25 31.8,-24.43 32.36,-27.17\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b8720400>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = {Node('parrt'),Node('mary')}\n",
    "objviz(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"92pt\" height=\"49pt\"\n",
       " viewBox=\"0.00 0.00 92.00 49.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 45)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-45 88,-45 88,4 -4,4\"/>\n",
       "<!-- node140547309310528 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547309310528</title>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"14,-41 0,-41 0,-7 14,-7 14,-41\"/>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-24 1,-40 13,-40 13,-24 1,-24\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-24 13,-24 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-29.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-8 1,-24 13,-24 13,-8 1,-8\"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-13.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "</g>\n",
       "<!-- node140547308983168 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>node140547308983168</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"84,-32 36,-32 36,0 84,0 84,-32\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"37,-19 37,-31 72,-31 72,-19 37,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"37,-19 72,-19 72,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"51.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"72,-19 72,-31 83,-31 83,-19 72,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"72,-19 83,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"74.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"37,-1 37,-19 72,-19 72,-1 37,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"72,-1 72,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"40\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;mary&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"72,-1 72,-19 83,-19 83,-1 72,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"74\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;</text>\n",
       "</g>\n",
       "<!-- node140547309310528&#45;&gt;node140547308983168 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>node140547309310528:1&#45;&gt;node140547308983168:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-16C22.25,-16 25.28,-16 31.9,-16\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"32,-17.4 36,-16 32,-14.6 32,-17.4\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b8711670>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "head2 = ('parrt',('mary',None))\n",
    "objviz(head2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"87pt\" height=\"90pt\"\n",
       " viewBox=\"0.00 0.00 87.00 90.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 86)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-86 83,-86 83,4 -4,4\"/>\n",
       "<!-- node140546768356672 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140546768356672</title>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"14,-82 0,-82 0,0 14,0 14,-82\"/>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-65 1,-81 13,-81 13,-65 1,-65\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-65 13,-65 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-70.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-49 1,-65 13,-65 13,-49 1,-49\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-49 13,-49 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-54.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-33 1,-49 13,-49 13,-33 1,-33\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-33 13,-33 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-38.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-17 1,-33 13,-33 13,-17 1,-17\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-17 13,-17 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-1 1,-17 13,-17 13,-1 1,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-6.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">4</text>\n",
       "</g>\n",
       "<!-- node140547309255232 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>node140547309255232</title>\n",
       "<text text-anchor=\"start\" x=\"44\" y=\"-38.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140546768356672&#45;&gt;node140547309255232 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>node140546768356672:0&#45;&gt;node140547309255232:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-73C31.69,-73 25.1,-45.8 39,-41.56\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"39.23,-42.94 43,-41 38.85,-40.16 39.23,-42.94\"/>\n",
       "</g>\n",
       "<!-- node140546768356672&#45;&gt;node140547309255232 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>node140546768356672:1&#45;&gt;node140547309255232:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-57C27.23,-57 28.21,-44.08 38.95,-41.46\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"39.18,-42.84 43,-41 38.87,-40.06 39.18,-42.84\"/>\n",
       "</g>\n",
       "<!-- node140546768356672&#45;&gt;node140547309255232 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>node140546768356672:2&#45;&gt;node140547309255232:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-41C25.38,-41 29.22,-41 38.84,-41\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"39,-42.4 43,-41 39,-39.6 39,-42.4\"/>\n",
       "</g>\n",
       "<!-- node140546768356672&#45;&gt;node140547309255232 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>node140546768356672:3&#45;&gt;node140547309255232:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-25C27.23,-25 28.21,-37.92 38.95,-40.54\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"38.87,-41.94 43,-41 39.18,-39.16 38.87,-41.94\"/>\n",
       "</g>\n",
       "<!-- node140546768356672&#45;&gt;node140547309255232 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>node140546768356672:4&#45;&gt;node140547309255232:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-9C31.69,-9 25.1,-36.2 39,-40.44\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"38.85,-41.84 43,-41 39.23,-39.06 38.85,-41.84\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b8723400>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = [[]] * 5  # INCORRECT list of list init\n",
    "lolviz(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"125pt\" height=\"90pt\"\n",
       " viewBox=\"0.00 0.00 125.00 90.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 86)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-86 121,-86 121,4 -4,4\"/>\n",
       "<!-- node140546768356672 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140546768356672</title>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"14,-82 0,-82 0,0 14,0 14,-82\"/>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-65 1,-81 13,-81 13,-65 1,-65\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-65 13,-65 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-70.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-49 1,-65 13,-65 13,-49 1,-49\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-49 13,-49 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-54.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-33 1,-49 13,-49 13,-33 1,-33\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-33 13,-33 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-38.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-17 1,-33 13,-33 13,-17 1,-17\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-17 13,-17 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-1 1,-17 13,-17 13,-1 1,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-6.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">4</text>\n",
       "</g>\n",
       "<!-- node140547309255232 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>node140547309255232</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"117,-57 43,-57 43,-25 117,-25 117,-57\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"44,-44 44,-56 81,-56 81,-44 44,-44\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"44,-44 81,-44 81,-56 \"/>\n",
       "<text text-anchor=\"start\" x=\"59.5\" y=\"-47.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"81,-44 81,-56 116,-56 116,-44 81,-44\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"81,-44 116,-44 \"/>\n",
       "<text text-anchor=\"start\" x=\"95.5\" y=\"-47.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"44,-26 44,-44 81,-44 81,-26 44,-26\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"81,-26 81,-44 \"/>\n",
       "<text text-anchor=\"start\" x=\"47\" y=\"-32.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">(&#39;a&#39;, 4)</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"81,-26 81,-44 116,-44 116,-26 81,-26\"/>\n",
       "<text text-anchor=\"start\" x=\"83\" y=\"-32.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">(&#39;b&#39;, 9)</text>\n",
       "</g>\n",
       "<!-- node140546768356672&#45;&gt;node140547309255232 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>node140546768356672:0&#45;&gt;node140547309255232:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-73C31.69,-73 25.1,-45.8 39,-41.56\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"39.23,-42.94 43,-41 38.85,-40.16 39.23,-42.94\"/>\n",
       "</g>\n",
       "<!-- node140546768356672&#45;&gt;node140547309255232 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>node140546768356672:1&#45;&gt;node140547309255232:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-57C27.23,-57 28.21,-44.08 38.95,-41.46\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"39.18,-42.84 43,-41 38.87,-40.06 39.18,-42.84\"/>\n",
       "</g>\n",
       "<!-- node140546768356672&#45;&gt;node140547309255232 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>node140546768356672:2&#45;&gt;node140547309255232:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-41C25.38,-41 29.22,-41 38.84,-41\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"39,-42.4 43,-41 39,-39.6 39,-42.4\"/>\n",
       "</g>\n",
       "<!-- node140546768356672&#45;&gt;node140547309255232 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>node140546768356672:3&#45;&gt;node140547309255232:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-25C27.23,-25 28.21,-37.92 38.95,-40.54\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"38.87,-41.94 43,-41 39.18,-39.16 38.87,-41.94\"/>\n",
       "</g>\n",
       "<!-- node140546768356672&#45;&gt;node140547309255232 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>node140546768356672:4&#45;&gt;node140547309255232:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-9C31.69,-9 25.1,-36.2 39,-40.44\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"38.85,-41.84 43,-41 39.23,-39.06 38.85,-41.84\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b8723e50>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[0].append( ('a',4) )\n",
    "data[2].append( ('b',9) ) # whoops! should be different list object\n",
    "lolviz(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"87pt\" height=\"90pt\"\n",
       " viewBox=\"0.00 0.00 87.00 90.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 86)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-86 83,-86 83,4 -4,4\"/>\n",
       "<!-- node140547309280256 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547309280256</title>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"14,-82 0,-82 0,0 14,0 14,-82\"/>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-65 1,-81 13,-81 13,-65 1,-65\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-65 13,-65 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-70.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-49 1,-65 13,-65 13,-49 1,-49\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-49 13,-49 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-54.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-33 1,-49 13,-49 13,-33 1,-33\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-33 13,-33 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-38.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-17 1,-33 13,-33 13,-17 1,-17\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-17 13,-17 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-1 1,-17 13,-17 13,-1 1,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-6.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">4</text>\n",
       "</g>\n",
       "<!-- node140546768300800 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>node140546768300800</title>\n",
       "<text text-anchor=\"start\" x=\"44\" y=\"-70.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140546768300800 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>node140547309280256:0&#45;&gt;node140546768300800:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-73C25.38,-73 29.22,-73 38.84,-73\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"39,-74.4 43,-73 39,-71.6 39,-74.4\"/>\n",
       "</g>\n",
       "<!-- node140547309304064 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>node140547309304064</title>\n",
       "<text text-anchor=\"start\" x=\"44\" y=\"-54.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140547309304064 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>node140547309280256:1&#45;&gt;node140547309304064:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-57C25.38,-57 29.22,-57 38.84,-57\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"39,-58.4 43,-57 39,-55.6 39,-58.4\"/>\n",
       "</g>\n",
       "<!-- node140546768340288 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>node140546768340288</title>\n",
       "<text text-anchor=\"start\" x=\"44\" y=\"-38.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140546768340288 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>node140547309280256:2&#45;&gt;node140546768340288:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-41C25.38,-41 29.22,-41 38.84,-41\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"39,-42.4 43,-41 39,-39.6 39,-42.4\"/>\n",
       "</g>\n",
       "<!-- node140546768474816 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>node140546768474816</title>\n",
       "<text text-anchor=\"start\" x=\"44\" y=\"-22.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140546768474816 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>node140547309280256:3&#45;&gt;node140546768474816:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-25C25.38,-25 29.22,-25 38.84,-25\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"39,-26.4 43,-25 39,-23.6 39,-26.4\"/>\n",
       "</g>\n",
       "<!-- node140546768341632 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>node140546768341632</title>\n",
       "<text text-anchor=\"start\" x=\"44\" y=\"-6.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140546768341632 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>node140547309280256:4&#45;&gt;node140546768341632:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-9C25.38,-9 29.22,-9 38.84,-9\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"39,-10.4 43,-9 39,-7.6 39,-10.4\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b8723d00>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "table = [ [] for i in range(5) ] # correct way to init\n",
    "lolviz(table)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "hashcode = 97\n",
      "bucket_index = 2\n"
     ]
    },
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"94pt\" height=\"102pt\"\n",
       " viewBox=\"0.00 0.00 94.00 102.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 98)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-98 90,-98 90,4 -4,4\"/>\n",
       "<!-- node140547309280256 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547309280256</title>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"14,-88 0,-88 0,-6 14,-6 14,-88\"/>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-71 1,-87 13,-87 13,-71 1,-71\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-71 13,-71 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-76.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-55 1,-71 13,-71 13,-55 1,-55\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-55 13,-55 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-60.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-39 1,-55 13,-55 13,-39 1,-39\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-39 13,-39 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-44.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-23 1,-39 13,-39 13,-23 1,-23\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-23 13,-23 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-28.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-7 1,-23 13,-23 13,-7 1,-7\"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-12.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">4</text>\n",
       "</g>\n",
       "<!-- node140546768300800 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>node140546768300800</title>\n",
       "<text text-anchor=\"start\" x=\"47.5\" y=\"-85.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140546768300800 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>node140547309280256:0&#45;&gt;node140546768300800:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-79C27.08,-79 30.33,-86.26 41.42,-87.74\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"41.42,-89.14 45.5,-88 41.6,-86.35 41.42,-89.14\"/>\n",
       "</g>\n",
       "<!-- node140547309304064 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>node140547309304064</title>\n",
       "<text text-anchor=\"start\" x=\"47.5\" y=\"-69.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140547309304064 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>node140547309280256:1&#45;&gt;node140547309304064:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-63C27.08,-63 30.33,-70.26 41.42,-71.74\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"41.42,-73.14 45.5,-72 41.6,-70.35 41.42,-73.14\"/>\n",
       "</g>\n",
       "<!-- node140546768340288 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>node140546768340288</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"86,-62 43,-62 43,-32 86,-32 86,-62\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"44.5,-49 44.5,-61 85.5,-61 85.5,-49 44.5,-49\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"44.5,-49 85.5,-49 \"/>\n",
       "<text text-anchor=\"start\" x=\"62\" y=\"-52.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"44.5,-33 44.5,-49 85.5,-49 85.5,-33 44.5,-33\"/>\n",
       "<text text-anchor=\"start\" x=\"46.5\" y=\"-38.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">(&#39;a&#39;, 99)</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140546768340288 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>node140547309280256:2&#45;&gt;node140546768340288:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-47C25.38,-47 29.22,-47 38.84,-47\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"39,-48.4 43,-47 39,-45.6 39,-48.4\"/>\n",
       "</g>\n",
       "<!-- node140546768474816 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>node140546768474816</title>\n",
       "<text text-anchor=\"start\" x=\"47.5\" y=\"-19.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140546768474816 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>node140547309280256:3&#45;&gt;node140546768474816:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-31C27.08,-31 30.33,-23.74 41.42,-22.26\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"41.6,-23.65 45.5,-22 41.42,-20.86 41.6,-23.65\"/>\n",
       "</g>\n",
       "<!-- node140546768341632 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>node140546768341632</title>\n",
       "<text text-anchor=\"start\" x=\"47.5\" y=\"-3.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140546768341632 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>node140547309280256:4&#45;&gt;node140546768341632:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-15C27.08,-15 30.33,-7.74 41.42,-6.26\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"41.6,-7.65 45.5,-6 41.42,-4.86 41.6,-7.65\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b872b8b0>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "key = 'a'\n",
    "value = 99\n",
    "def hashcode(o): return ord(o) # assume keys are single-element strings\n",
    "print(\"hashcode =\", hashcode(key))\n",
    "bucket_index = hashcode(key) % len(table)\n",
    "print(\"bucket_index =\", bucket_index)\n",
    "bucket = table[bucket_index]\n",
    "bucket.append( (key,value) ) # add association to the bucket\n",
    "lolviz(table)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "hashcode = 102\n",
      "bucket_index = 2\n"
     ]
    },
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"134pt\" height=\"104pt\"\n",
       " viewBox=\"0.00 0.00 134.00 104.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 100)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-100 130,-100 130,4 -4,4\"/>\n",
       "<!-- node140547309280256 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547309280256</title>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"14,-89 0,-89 0,-7 14,-7 14,-89\"/>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-72 1,-88 13,-88 13,-72 1,-72\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-72 13,-72 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-77.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-56 1,-72 13,-72 13,-56 1,-56\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-56 13,-56 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-61.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-40 1,-56 13,-56 13,-40 1,-40\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-40 13,-40 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-45.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-24 1,-40 13,-40 13,-24 1,-24\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-24 13,-24 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-29.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-8 1,-24 13,-24 13,-8 1,-8\"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-13.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">4</text>\n",
       "</g>\n",
       "<!-- node140546768300800 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>node140546768300800</title>\n",
       "<text text-anchor=\"start\" x=\"67.5\" y=\"-87.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140546768300800 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>node140547309280256:0&#45;&gt;node140546768300800:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-80C35.86,-80 41.5,-88.79 61.34,-89.89\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"61.46,-91.29 65.5,-90 61.54,-88.49 61.46,-91.29\"/>\n",
       "</g>\n",
       "<!-- node140547309304064 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>node140547309304064</title>\n",
       "<text text-anchor=\"start\" x=\"67.5\" y=\"-71.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140547309304064 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>node140547309280256:1&#45;&gt;node140547309304064:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-64C35.86,-64 41.5,-72.79 61.34,-73.89\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"61.46,-75.29 65.5,-74 61.54,-72.49 61.46,-75.29\"/>\n",
       "</g>\n",
       "<!-- node140546768340288 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>node140546768340288</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"126,-64 43,-64 43,-32 126,-32 126,-64\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"44.5,-51 44.5,-63 87.5,-63 87.5,-51 44.5,-51\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"44.5,-51 87.5,-51 87.5,-63 \"/>\n",
       "<text text-anchor=\"start\" x=\"63\" y=\"-54.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"87.5,-51 87.5,-63 125.5,-63 125.5,-51 87.5,-51\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"87.5,-51 125.5,-51 \"/>\n",
       "<text text-anchor=\"start\" x=\"103.5\" y=\"-54.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"44.5,-33 44.5,-51 87.5,-51 87.5,-33 44.5,-33\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"87.5,-33 87.5,-51 \"/>\n",
       "<text text-anchor=\"start\" x=\"47.5\" y=\"-39.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">(&#39;a&#39;, 99)</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"87.5,-33 87.5,-51 125.5,-51 125.5,-33 87.5,-33\"/>\n",
       "<text text-anchor=\"start\" x=\"89.5\" y=\"-39.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">(&#39;f&#39;, 99)</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140546768340288 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>node140547309280256:2&#45;&gt;node140546768340288:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-48C25.38,-48 29.22,-48 38.84,-48\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"39,-49.4 43,-48 39,-46.6 39,-49.4\"/>\n",
       "</g>\n",
       "<!-- node140546768474816 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>node140546768474816</title>\n",
       "<text text-anchor=\"start\" x=\"67.5\" y=\"-19.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140546768474816 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>node140547309280256:3&#45;&gt;node140546768474816:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-32C35.86,-32 41.5,-23.21 61.34,-22.11\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"61.54,-23.51 65.5,-22 61.46,-20.71 61.54,-23.51\"/>\n",
       "</g>\n",
       "<!-- node140546768341632 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>node140546768341632</title>\n",
       "<text text-anchor=\"start\" x=\"67.5\" y=\"-3.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140546768341632 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>node140547309280256:4&#45;&gt;node140546768341632:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-16C35.86,-16 41.5,-7.21 61.34,-6.11\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"61.54,-7.51 65.5,-6 61.46,-4.71 61.54,-7.51\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b872b460>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "key = 'f'\n",
    "value = 99\n",
    "print(\"hashcode =\", hashcode(key))\n",
    "bucket_index = hashcode(key) % len(table)\n",
    "print(\"bucket_index =\", bucket_index)\n",
    "bucket = table[bucket_index]\n",
    "bucket.append( (key,value) ) # add association to the bucket\n",
    "lolviz(table)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If we don't indicate we want a simple 2-level list of list with `lolviz()`, we get a generic object graph:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"140pt\" height=\"126pt\"\n",
       " viewBox=\"0.00 0.00 140.00 126.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 122)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-122 136,-122 136,4 -4,4\"/>\n",
       "<!-- node140547309325440 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547309325440</title>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"14,-100 0,-100 0,-18 14,-18 14,-100\"/>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-83 1,-99 13,-99 13,-83 1,-83\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-83 13,-83 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-88.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-67 1,-83 13,-83 13,-67 1,-67\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-67 13,-67 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-72.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-51 1,-67 13,-67 13,-51 1,-51\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-51 13,-51 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-56.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-35 1,-51 13,-51 13,-35 1,-35\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-35 13,-35 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-40.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-19 1,-35 13,-35 13,-19 1,-19\"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-24.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">4</text>\n",
       "</g>\n",
       "<!-- node140546768300800 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>node140546768300800</title>\n",
       "<text text-anchor=\"start\" x=\"38\" y=\"-108.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309325440&#45;&gt;node140546768300800 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>node140547309325440:0&#45;&gt;node140546768300800:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-91C25.56,-91 23.62,-106.31 31.8,-110.14\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"31.8,-111.57 36,-111 32.36,-108.83 31.8,-111.57\"/>\n",
       "</g>\n",
       "<!-- node140547309304064 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>node140547309304064</title>\n",
       "<text text-anchor=\"start\" x=\"38\" y=\"-87.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309325440&#45;&gt;node140547309304064 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>node140547309325440:1&#45;&gt;node140547309304064:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-75C24.17,-75 24.37,-86.08 31.73,-89.19\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"31.81,-90.63 36,-90 32.33,-87.88 31.81,-90.63\"/>\n",
       "</g>\n",
       "<!-- node140546768340288 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>node140546768340288</title>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"62,-76 48,-76 48,-42 62,-42 62,-76\"/>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"49,-59 49,-75 61,-75 61,-59 49,-59\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"49,-59 61,-59 \"/>\n",
       "<text text-anchor=\"start\" x=\"52\" y=\"-64.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"49,-43 49,-59 61,-59 61,-43 49,-43\"/>\n",
       "<text text-anchor=\"start\" x=\"52\" y=\"-48.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "</g>\n",
       "<!-- node140547309325440&#45;&gt;node140546768340288 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>node140547309325440:2&#45;&gt;node140546768340288:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-59C27.18,-59 31.48,-59 42.85,-59\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"43,-60.4 47,-59 43,-57.6 43,-60.4\"/>\n",
       "</g>\n",
       "<!-- node140546768474816 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>node140546768474816</title>\n",
       "<text text-anchor=\"start\" x=\"38\" y=\"-25.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309325440&#45;&gt;node140546768474816 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>node140547309325440:3&#45;&gt;node140546768474816:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-43C24.17,-43 24.37,-31.92 31.73,-28.81\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"32.33,-30.12 36,-28 31.81,-27.37 32.33,-30.12\"/>\n",
       "</g>\n",
       "<!-- node140546768341632 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>node140546768341632</title>\n",
       "<text text-anchor=\"start\" x=\"38\" y=\"-4.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309325440&#45;&gt;node140546768341632 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>node140547309325440:4&#45;&gt;node140546768341632:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-27C25.56,-27 23.62,-11.69 31.8,-7.86\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"32.36,-9.17 36,-7 31.8,-6.43 32.36,-9.17\"/>\n",
       "</g>\n",
       "<!-- node140547309156928 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>node140547309156928</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"132,-94 96,-94 96,-62 132,-62 132,-94\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"97,-81 97,-93 114,-93 114,-81 97,-81\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"97,-81 114,-81 114,-93 \"/>\n",
       "<text text-anchor=\"start\" x=\"102.5\" y=\"-84.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"114,-81 114,-93 131,-93 131,-81 114,-81\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"114,-81 131,-81 \"/>\n",
       "<text text-anchor=\"start\" x=\"119.5\" y=\"-84.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"97,-63 97,-81 114,-81 114,-63 97,-63\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"114,-63 114,-81 \"/>\n",
       "<text text-anchor=\"start\" x=\"100\" y=\"-69.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;a&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"114,-63 114,-81 131,-81 131,-63 114,-63\"/>\n",
       "<text text-anchor=\"start\" x=\"116\" y=\"-69.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">99</text>\n",
       "</g>\n",
       "<!-- node140546768340288&#45;&gt;node140547309156928 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>node140546768340288:0&#45;&gt;node140547309156928:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M62,-67C76.39,-67 79.58,-76.03 91.87,-77.73\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"91.92,-79.13 96,-78 92.1,-76.34 91.92,-79.13\"/>\n",
       "</g>\n",
       "<!-- node140547309105664 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>node140547309105664</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"130.5,-55 97.5,-55 97.5,-23 130.5,-23 130.5,-55\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"99,-42 99,-54 113,-54 113,-42 99,-42\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"99,-42 113,-42 113,-54 \"/>\n",
       "<text text-anchor=\"start\" x=\"103\" y=\"-45.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"113,-42 113,-54 130,-54 130,-42 113,-42\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"113,-42 130,-42 \"/>\n",
       "<text text-anchor=\"start\" x=\"118.5\" y=\"-45.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"99,-24 99,-42 113,-42 113,-24 99,-24\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"113,-24 113,-42 \"/>\n",
       "<text text-anchor=\"start\" x=\"102\" y=\"-30.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;f&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"113,-24 113,-42 130,-42 130,-24 113,-24\"/>\n",
       "<text text-anchor=\"start\" x=\"115\" y=\"-30.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">99</text>\n",
       "</g>\n",
       "<!-- node140546768340288&#45;&gt;node140547309105664 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>node140546768340288:1&#45;&gt;node140547309105664:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M62,-51C76.52,-51 79.49,-41.14 91.84,-39.3\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"92.11,-40.68 96,-39 91.91,-37.89 92.11,-40.68\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b872b7c0>"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "objviz(table)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "140547309325184 140547309325184\n"
     ]
    },
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"124pt\" height=\"118pt\"\n",
       " viewBox=\"0.00 0.00 124.00 118.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 114)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-114 120,-114 120,4 -4,4\"/>\n",
       "<!-- node140547309312320 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547309312320</title>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"14,-80 0,-80 0,-30 14,-30 14,-80\"/>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-63 1,-79 13,-79 13,-63 1,-63\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-63 13,-63 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-68.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-47 1,-63 13,-63 13,-47 1,-47\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"1,-47 13,-47 \"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-52.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"1,-31 1,-47 13,-47 13,-31 1,-31\"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-36.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">2</text>\n",
       "</g>\n",
       "<!-- node140547309388864 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>node140547309388864</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"113,-110 39,-110 39,-78 113,-78 113,-110\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"40,-97 40,-109 95,-109 95,-97 40,-97\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"40,-97 95,-97 95,-109 \"/>\n",
       "<text text-anchor=\"start\" x=\"64.5\" y=\"-100.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"95,-97 95,-109 112,-109 112,-97 95,-97\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"95,-97 112,-97 \"/>\n",
       "<text text-anchor=\"start\" x=\"100.5\" y=\"-100.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"40,-79 40,-97 95,-97 95,-79 40,-79\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"95,-79 95,-97 \"/>\n",
       "<text text-anchor=\"start\" x=\"43\" y=\"-85.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;msan501&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"95,-79 95,-97 112,-97 112,-79 95,-79\"/>\n",
       "<text text-anchor=\"start\" x=\"97\" y=\"-85.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">51</text>\n",
       "</g>\n",
       "<!-- node140547309312320&#45;&gt;node140547309388864 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>node140547309312320:0&#45;&gt;node140547309388864:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-71C27.16,-71 24.2,-89.24 33.83,-93.23\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"33.81,-94.66 38,-94 34.32,-91.9 33.81,-94.66\"/>\n",
       "</g>\n",
       "<!-- node140546768341888 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>node140546768341888</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"113,-71 39,-71 39,-39 113,-39 113,-71\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"40,-58 40,-70 95,-70 95,-58 40,-58\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"40,-58 95,-58 95,-70 \"/>\n",
       "<text text-anchor=\"start\" x=\"64.5\" y=\"-61.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"95,-58 95,-70 112,-70 112,-58 95,-58\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"95,-58 112,-58 \"/>\n",
       "<text text-anchor=\"start\" x=\"100.5\" y=\"-61.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"40,-40 40,-58 95,-58 95,-40 40,-40\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"95,-40 95,-58 \"/>\n",
       "<text text-anchor=\"start\" x=\"43\" y=\"-46.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;msan502&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"95,-40 95,-58 112,-58 112,-40 95,-40\"/>\n",
       "<text text-anchor=\"start\" x=\"97\" y=\"-46.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">32</text>\n",
       "</g>\n",
       "<!-- node140547309312320&#45;&gt;node140546768341888 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>node140547309312320:1&#45;&gt;node140546768341888:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-55C23.17,-55 26.43,-55 33.93,-55\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"34,-56.4 38,-55 34,-53.6 34,-56.4\"/>\n",
       "</g>\n",
       "<!-- node140546768341120 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>node140546768341120</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"116,-32 36,-32 36,0 116,0 116,-32\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"37,-19 37,-31 92,-31 92,-19 37,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"37,-19 92,-19 92,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"61.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"92,-19 92,-31 115,-31 115,-19 92,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"92,-19 115,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"100.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"37,-1 37,-19 92,-19 92,-1 37,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"92,-1 92,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"40\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;msan692&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"92,-1 92,-19 115,-19 115,-1 92,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"94\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">101</text>\n",
       "</g>\n",
       "<!-- node140547309312320&#45;&gt;node140546768341120 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>node140547309312320:2&#45;&gt;node140546768341120:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M14,-39C26.6,-39 22.99,-20.76 32.04,-16.77\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"32.34,-18.13 36,-16 31.81,-15.38 32.34,-18.13\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b872bcd0>"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "courses = [\n",
    "    ['msan501', 51],\n",
    "    ['msan502', 32],\n",
    "    ['msan692', 101]\n",
    "]\n",
    "mycourses = courses\n",
    "print(id(mycourses), id(courses))\n",
    "objviz(courses)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can also display strings as arrays in isolation (but not in other data structures as I figured it's not that useful in most cases):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"96pt\" height=\"43pt\"\n",
       " viewBox=\"0.00 0.00 96.00 43.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 39)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-39 92,-39 92,4 -4,4\"/>\n",
       "<!-- node140547309323696 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547309323696</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"88,-35 0,-35 0,0 88,0 88,-35\"/>\n",
       "<polygon fill=\"#fbfeb0\" stroke=\"transparent\" points=\"12,-18.5 12,-30.5 20,-30.5 20,-18.5 12,-18.5\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"12,-18.5 20,-18.5 20,-30.5 \"/>\n",
       "<text text-anchor=\"start\" x=\"13\" y=\"-22.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fbfeb0\" stroke=\"transparent\" points=\"20,-18.5 20,-30.5 28,-30.5 28,-18.5 20,-18.5\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"20,-18.5 28,-18.5 28,-30.5 \"/>\n",
       "<text text-anchor=\"start\" x=\"21\" y=\"-22.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fbfeb0\" stroke=\"transparent\" points=\"28,-18.5 28,-30.5 36,-30.5 36,-18.5 28,-18.5\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"28,-18.5 36,-18.5 36,-30.5 \"/>\n",
       "<text text-anchor=\"start\" x=\"29\" y=\"-22.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#fbfeb0\" stroke=\"transparent\" points=\"36,-18.5 36,-30.5 44,-30.5 44,-18.5 36,-18.5\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"36,-18.5 44,-18.5 44,-30.5 \"/>\n",
       "<text text-anchor=\"start\" x=\"37\" y=\"-22.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#fbfeb0\" stroke=\"transparent\" points=\"44,-18.5 44,-30.5 52,-30.5 52,-18.5 44,-18.5\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"44,-18.5 52,-18.5 52,-30.5 \"/>\n",
       "<text text-anchor=\"start\" x=\"45\" y=\"-22.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">4</text>\n",
       "<polygon fill=\"#fbfeb0\" stroke=\"transparent\" points=\"52,-18.5 52,-30.5 60,-30.5 60,-18.5 52,-18.5\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"52,-18.5 60,-18.5 60,-30.5 \"/>\n",
       "<text text-anchor=\"start\" x=\"53\" y=\"-22.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">5</text>\n",
       "<polygon fill=\"#fbfeb0\" stroke=\"transparent\" points=\"60,-18.5 60,-30.5 68,-30.5 68,-18.5 60,-18.5\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"60,-18.5 68,-18.5 68,-30.5 \"/>\n",
       "<text text-anchor=\"start\" x=\"61\" y=\"-22.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">6</text>\n",
       "<polygon fill=\"#fbfeb0\" stroke=\"transparent\" points=\"68,-18.5 68,-30.5 76,-30.5 76,-18.5 68,-18.5\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"68,-18.5 76,-18.5 \"/>\n",
       "<text text-anchor=\"start\" x=\"69\" y=\"-22.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">7</text>\n",
       "<text text-anchor=\"start\" x=\"8\" y=\"-7.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\" fill=\"#444443\">&#39;</text>\n",
       "<polygon fill=\"#fbfeb0\" stroke=\"transparent\" points=\"12,-3.5 12,-18.5 20,-18.5 20,-3.5 12,-3.5\"/>\n",
       "<text text-anchor=\"start\" x=\"12.5\" y=\"-8.2\" font-family=\"Monaco\" font-size=\"11.00\" fill=\"#444443\">N</text>\n",
       "<polygon fill=\"#fbfeb0\" stroke=\"transparent\" points=\"20,-3.5 20,-18.5 28,-18.5 28,-3.5 20,-3.5\"/>\n",
       "<text text-anchor=\"start\" x=\"20.5\" y=\"-8.2\" font-family=\"Monaco\" font-size=\"11.00\" fill=\"#444443\">e</text>\n",
       "<polygon fill=\"#fbfeb0\" stroke=\"transparent\" points=\"28,-3.5 28,-18.5 36,-18.5 36,-3.5 28,-3.5\"/>\n",
       "<text text-anchor=\"start\" x=\"28.5\" y=\"-8.2\" font-family=\"Monaco\" font-size=\"11.00\" fill=\"#444443\">w</text>\n",
       "<polygon fill=\"#fbfeb0\" stroke=\"transparent\" points=\"36,-3.5 36,-18.5 44,-18.5 44,-3.5 36,-3.5\"/>\n",
       "<text text-anchor=\"start\" x=\"36.5\" y=\"-8.2\" font-family=\"Monaco\" font-size=\"11.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fbfeb0\" stroke=\"transparent\" points=\"44,-3.5 44,-18.5 52,-18.5 52,-3.5 44,-3.5\"/>\n",
       "<text text-anchor=\"start\" x=\"44.5\" y=\"-8.2\" font-family=\"Monaco\" font-size=\"11.00\" fill=\"#444443\">Y</text>\n",
       "<polygon fill=\"#fbfeb0\" stroke=\"transparent\" points=\"52,-3.5 52,-18.5 60,-18.5 60,-3.5 52,-3.5\"/>\n",
       "<text text-anchor=\"start\" x=\"52.5\" y=\"-8.2\" font-family=\"Monaco\" font-size=\"11.00\" fill=\"#444443\">o</text>\n",
       "<polygon fill=\"#fbfeb0\" stroke=\"transparent\" points=\"60,-3.5 60,-18.5 68,-18.5 68,-3.5 60,-3.5\"/>\n",
       "<text text-anchor=\"start\" x=\"60.5\" y=\"-8.2\" font-family=\"Monaco\" font-size=\"11.00\" fill=\"#444443\">r</text>\n",
       "<polygon fill=\"#fbfeb0\" stroke=\"transparent\" points=\"68,-3.5 68,-18.5 76,-18.5 76,-3.5 68,-3.5\"/>\n",
       "<text text-anchor=\"start\" x=\"68.5\" y=\"-8.2\" font-family=\"Monaco\" font-size=\"11.00\" fill=\"#444443\">k</text>\n",
       "<text text-anchor=\"start\" x=\"76\" y=\"-7.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\" fill=\"#444443\">&#39;</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b872bca0>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "strviz('New York')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"236pt\" height=\"298pt\"\n",
       " viewBox=\"0.00 0.00 235.50 298.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 294)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-294 231.5,-294 231.5,4 -4,4\"/>\n",
       "<!-- node140547309248320 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547309248320</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"175.5,-290 107.5,-290 107.5,-234 175.5,-234 175.5,-290\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"109.5,-274 109.5,-288 173.5,-288 173.5,-274 109.5,-274\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"109.5,-274 173.5,-274 \"/>\n",
       "<text text-anchor=\"start\" x=\"131.5\" y=\"-278.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">Tree</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"109.5,-272 109.5,-274 173.5,-274 173.5,-272 109.5,-272\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"109.5,-258 109.5,-272 140.5,-272 140.5,-258 109.5,-258\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"140.5,-258 140.5,-272 \"/>\n",
       "<text text-anchor=\"start\" x=\"110.5\" y=\"-262.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">value </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"140.5,-258 140.5,-272 173.5,-272 173.5,-258 140.5,-258\"/>\n",
       "<text text-anchor=\"start\" x=\"141.5\" y=\"-262.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;parrt&#39;</text>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"109.5,-255 173.5,-255 \"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"109.5,-253 109.5,-255 173.5,-255 173.5,-253 109.5,-253\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"109.5,-244 109.5,-253 140.5,-253 140.5,-244 109.5,-244\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"140.5,-244 140.5,-253 \"/>\n",
       "<text text-anchor=\"start\" x=\"110.5\" y=\"-247.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"6.00\" fill=\"#444443\">left</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"140.5,-244 140.5,-253 140.5,-253 140.5,-244 140.5,-244\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"140.5,-244 140.5,-253 173.5,-253 173.5,-244 140.5,-244\"/>\n",
       "<text text-anchor=\"start\" x=\"160.5\" y=\"-247.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"6.00\" fill=\"#444443\">right</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"109.5,-241 109.5,-244 140.5,-244 140.5,-241 109.5,-241\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"140.5,-241 140.5,-244 \"/>\n",
       "<text text-anchor=\"start\" x=\"124.86\" y=\"-242.1\" font-family=\"Helvetica,sans-Serif\" font-size=\"1.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"140.5,-241 140.5,-244 140.5,-244 140.5,-241 140.5,-241\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"140.5,-241 140.5,-244 173.5,-244 173.5,-241 140.5,-241\"/>\n",
       "<text text-anchor=\"start\" x=\"156.86\" y=\"-242.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"1.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"109.5,-236 109.5,-241 140.5,-241 140.5,-236 109.5,-236\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"140.5,-236 140.5,-241 \"/>\n",
       "<text text-anchor=\"start\" x=\"124.5\" y=\"-237.6\" font-family=\"Helvetica,sans-Serif\" font-size=\"3.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"140.5,-236 140.5,-241 140.5,-241 140.5,-236 140.5,-236\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"140.5,-236 140.5,-241 173.5,-241 173.5,-236 140.5,-236\"/>\n",
       "<text text-anchor=\"start\" x=\"156.5\" y=\"-237.6\" font-family=\"Helvetica,sans-Serif\" font-size=\"3.00\" fill=\"#444443\"> </text>\n",
       "</g>\n",
       "<!-- node140546505413776 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>node140546505413776</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"139,-212 70,-212 70,-156 139,-156 139,-212\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"72.5,-196 72.5,-210 137.5,-210 137.5,-196 72.5,-196\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"72.5,-196 137.5,-196 \"/>\n",
       "<text text-anchor=\"start\" x=\"95\" y=\"-200.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">Tree</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"72.5,-194 72.5,-196 137.5,-196 137.5,-194 72.5,-194\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"72.5,-180 72.5,-194 103.5,-194 103.5,-180 72.5,-180\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"103.5,-180 103.5,-194 \"/>\n",
       "<text text-anchor=\"start\" x=\"73.5\" y=\"-184.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">value </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"103.5,-180 103.5,-194 137.5,-194 137.5,-180 103.5,-180\"/>\n",
       "<text text-anchor=\"start\" x=\"104.5\" y=\"-184.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;mary&#39;</text>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"72.5,-177 137.5,-177 \"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"72.5,-175 72.5,-177 137.5,-177 137.5,-175 72.5,-175\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"72.5,-166 72.5,-175 103.5,-175 103.5,-166 72.5,-166\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"103.5,-166 103.5,-175 \"/>\n",
       "<text text-anchor=\"start\" x=\"73.5\" y=\"-169.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"6.00\" fill=\"#444443\">left</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"103.5,-166 103.5,-175 103.5,-175 103.5,-166 103.5,-166\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"103.5,-166 103.5,-175 137.5,-175 137.5,-166 103.5,-166\"/>\n",
       "<text text-anchor=\"start\" x=\"124.5\" y=\"-169.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"6.00\" fill=\"#444443\">right</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"72.5,-163 72.5,-166 103.5,-166 103.5,-163 72.5,-163\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"103.5,-163 103.5,-166 \"/>\n",
       "<text text-anchor=\"start\" x=\"87.86\" y=\"-164.1\" font-family=\"Helvetica,sans-Serif\" font-size=\"1.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"103.5,-163 103.5,-166 103.5,-166 103.5,-163 103.5,-163\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"103.5,-163 103.5,-166 137.5,-166 137.5,-163 103.5,-163\"/>\n",
       "<text text-anchor=\"start\" x=\"120.36\" y=\"-164.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"1.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"72.5,-158 72.5,-163 103.5,-163 103.5,-158 72.5,-158\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"103.5,-158 103.5,-163 \"/>\n",
       "<text text-anchor=\"start\" x=\"87.5\" y=\"-159.6\" font-family=\"Helvetica,sans-Serif\" font-size=\"3.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"103.5,-158 103.5,-163 103.5,-163 103.5,-158 103.5,-158\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"103.5,-158 103.5,-163 137.5,-163 137.5,-158 103.5,-158\"/>\n",
       "<text text-anchor=\"start\" x=\"120\" y=\"-159.6\" font-family=\"Helvetica,sans-Serif\" font-size=\"3.00\" fill=\"#444443\"> </text>\n",
       "</g>\n",
       "<!-- node140547309248320&#45;&gt;node140546505413776 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>node140547309248320:c&#45;&gt;node140546505413776</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M123.38,-237.85C121.79,-233.41 118.73,-224.84 115.53,-215.87\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"123.96\" cy=\"-239.49\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"116.81,-215.31 114.15,-212.02 114.18,-216.25 116.81,-215.31\"/>\n",
       "</g>\n",
       "<!-- node140547309247840 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>node140547309247840</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"208.5,-212 146.5,-212 146.5,-156 208.5,-156 208.5,-212\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"148.5,-196 148.5,-210 206.5,-210 206.5,-196 148.5,-196\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"148.5,-196 206.5,-196 \"/>\n",
       "<text text-anchor=\"start\" x=\"167.5\" y=\"-200.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">Tree</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"148.5,-194 148.5,-196 206.5,-196 206.5,-194 148.5,-194\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"148.5,-180 148.5,-194 179.5,-194 179.5,-180 148.5,-180\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"179.5,-180 179.5,-194 \"/>\n",
       "<text text-anchor=\"start\" x=\"149.5\" y=\"-184.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">value </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"179.5,-180 179.5,-194 206.5,-194 206.5,-180 179.5,-180\"/>\n",
       "<text text-anchor=\"start\" x=\"180.5\" y=\"-184.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;xue&#39;</text>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"148.5,-177 206.5,-177 \"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"148.5,-175 148.5,-177 206.5,-177 206.5,-175 148.5,-175\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"148.5,-166 148.5,-175 179.5,-175 179.5,-166 148.5,-166\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"179.5,-166 179.5,-175 \"/>\n",
       "<text text-anchor=\"start\" x=\"149.5\" y=\"-169.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"6.00\" fill=\"#444443\">left</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"179.5,-166 179.5,-175 179.5,-175 179.5,-166 179.5,-166\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"179.5,-166 179.5,-175 206.5,-175 206.5,-166 179.5,-166\"/>\n",
       "<text text-anchor=\"start\" x=\"193.5\" y=\"-169.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"6.00\" fill=\"#444443\">right</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"148.5,-163 148.5,-166 179.5,-166 179.5,-163 148.5,-163\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"179.5,-163 179.5,-166 \"/>\n",
       "<text text-anchor=\"start\" x=\"163.86\" y=\"-164.1\" font-family=\"Helvetica,sans-Serif\" font-size=\"1.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"179.5,-163 179.5,-166 179.5,-166 179.5,-163 179.5,-163\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"179.5,-163 179.5,-166 206.5,-166 206.5,-163 179.5,-163\"/>\n",
       "<text text-anchor=\"start\" x=\"192.86\" y=\"-164.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"1.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"148.5,-158 148.5,-163 179.5,-163 179.5,-158 148.5,-158\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"179.5,-158 179.5,-163 \"/>\n",
       "<text text-anchor=\"start\" x=\"163.5\" y=\"-159.6\" font-family=\"Helvetica,sans-Serif\" font-size=\"3.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"179.5,-158 179.5,-163 179.5,-163 179.5,-158 179.5,-158\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"179.5,-158 179.5,-163 206.5,-163 206.5,-158 179.5,-158\"/>\n",
       "<text text-anchor=\"start\" x=\"192.5\" y=\"-159.6\" font-family=\"Helvetica,sans-Serif\" font-size=\"3.00\" fill=\"#444443\"> </text>\n",
       "</g>\n",
       "<!-- node140547309248320&#45;&gt;node140547309247840 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>node140547309248320:c&#45;&gt;node140547309247840</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M158.62,-237.85C160.21,-233.41 163.27,-224.84 166.47,-215.87\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"158.04\" cy=\"-239.49\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"167.82,-216.25 167.85,-212.02 165.19,-215.31 167.82,-216.25\"/>\n",
       "</g>\n",
       "<!-- node140546505414208 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>node140546505414208</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"117,-134 58,-134 58,-78 117,-78 117,-134\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"60.5,-118 60.5,-132 115.5,-132 115.5,-118 60.5,-118\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"60.5,-118 115.5,-118 \"/>\n",
       "<text text-anchor=\"start\" x=\"78\" y=\"-122.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">Tree</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"60.5,-116 60.5,-118 115.5,-118 115.5,-116 60.5,-116\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"60.5,-102 60.5,-116 91.5,-116 91.5,-102 60.5,-102\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"91.5,-102 91.5,-116 \"/>\n",
       "<text text-anchor=\"start\" x=\"61.5\" y=\"-106.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">value </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"91.5,-102 91.5,-116 115.5,-116 115.5,-102 91.5,-102\"/>\n",
       "<text text-anchor=\"start\" x=\"92.5\" y=\"-106.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;jim&#39;</text>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"60.5,-99 115.5,-99 \"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"60.5,-97 60.5,-99 115.5,-99 115.5,-97 60.5,-97\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"60.5,-88 60.5,-97 91.5,-97 91.5,-88 60.5,-88\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"91.5,-88 91.5,-97 \"/>\n",
       "<text text-anchor=\"start\" x=\"61.5\" y=\"-91.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"6.00\" fill=\"#444443\">left</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"91.5,-88 91.5,-97 91.5,-97 91.5,-88 91.5,-88\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"91.5,-88 91.5,-97 115.5,-97 115.5,-88 91.5,-88\"/>\n",
       "<text text-anchor=\"start\" x=\"102.5\" y=\"-91.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"6.00\" fill=\"#444443\">right</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"60.5,-85 60.5,-88 91.5,-88 91.5,-85 60.5,-85\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"91.5,-85 91.5,-88 \"/>\n",
       "<text text-anchor=\"start\" x=\"75.86\" y=\"-86.1\" font-family=\"Helvetica,sans-Serif\" font-size=\"1.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"91.5,-85 91.5,-88 91.5,-88 91.5,-85 91.5,-85\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"91.5,-85 91.5,-88 115.5,-88 115.5,-85 91.5,-85\"/>\n",
       "<text text-anchor=\"start\" x=\"103.36\" y=\"-86.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"1.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"60.5,-80 60.5,-85 91.5,-85 91.5,-80 60.5,-80\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"91.5,-80 91.5,-85 \"/>\n",
       "<text text-anchor=\"start\" x=\"75.5\" y=\"-81.6\" font-family=\"Helvetica,sans-Serif\" font-size=\"3.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"91.5,-80 91.5,-85 91.5,-85 91.5,-80 91.5,-80\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"91.5,-80 91.5,-85 115.5,-85 115.5,-80 91.5,-80\"/>\n",
       "<text text-anchor=\"start\" x=\"103\" y=\"-81.6\" font-family=\"Helvetica,sans-Serif\" font-size=\"3.00\" fill=\"#444443\"> </text>\n",
       "</g>\n",
       "<!-- node140546505413776&#45;&gt;node140546505414208 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>node140546505413776:c&#45;&gt;node140546505414208</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M87.5,-159.52C87.5,-155.05 87.5,-146.86 87.5,-138.26\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"87.5\" cy=\"-161.4\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"88.9,-138.02 87.5,-134.02 86.1,-138.02 88.9,-138.02\"/>\n",
       "</g>\n",
       "<!-- node140547309352848 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>node140547309352848</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"93,-56 0,-56 0,0 93,0 93,-56\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"2.5,-40 2.5,-54 91.5,-54 91.5,-40 2.5,-40\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"2.5,-40 91.5,-40 \"/>\n",
       "<text text-anchor=\"start\" x=\"37\" y=\"-44.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">Tree</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"2.5,-38 2.5,-40 91.5,-40 91.5,-38 2.5,-38\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"2.5,-24 2.5,-38 33.5,-38 33.5,-24 2.5,-24\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"33.5,-24 33.5,-38 \"/>\n",
       "<text text-anchor=\"start\" x=\"3.5\" y=\"-28.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">value </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"33.5,-24 33.5,-38 91.5,-38 91.5,-24 33.5,-24\"/>\n",
       "<text text-anchor=\"start\" x=\"34.5\" y=\"-28.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;srinivasan&#39;</text>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"2.5,-21 91.5,-21 \"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"2.5,-19 2.5,-21 91.5,-21 91.5,-19 2.5,-19\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"2.5,-10 2.5,-19 33.5,-19 33.5,-10 2.5,-10\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"33.5,-10 33.5,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"3.5\" y=\"-13.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"6.00\" fill=\"#444443\">left</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"33.5,-10 33.5,-19 33.5,-19 33.5,-10 33.5,-10\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"33.5,-10 33.5,-19 91.5,-19 91.5,-10 33.5,-10\"/>\n",
       "<text text-anchor=\"start\" x=\"78.5\" y=\"-13.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"6.00\" fill=\"#444443\">right</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"2.5,-7 2.5,-10 33.5,-10 33.5,-7 2.5,-7\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"33.5,-7 33.5,-10 \"/>\n",
       "<text text-anchor=\"start\" x=\"17.86\" y=\"-8.1\" font-family=\"Helvetica,sans-Serif\" font-size=\"1.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"33.5,-7 33.5,-10 33.5,-10 33.5,-7 33.5,-7\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"33.5,-7 33.5,-10 91.5,-10 91.5,-7 33.5,-7\"/>\n",
       "<text text-anchor=\"start\" x=\"62.36\" y=\"-8.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"1.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"2.5,-2 2.5,-7 33.5,-7 33.5,-2 2.5,-2\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"33.5,-2 33.5,-7 \"/>\n",
       "<text text-anchor=\"start\" x=\"17.5\" y=\"-3.6\" font-family=\"Helvetica,sans-Serif\" font-size=\"3.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"33.5,-2 33.5,-7 33.5,-7 33.5,-2 33.5,-2\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"33.5,-2 33.5,-7 91.5,-7 91.5,-2 33.5,-2\"/>\n",
       "<text text-anchor=\"start\" x=\"62\" y=\"-3.6\" font-family=\"Helvetica,sans-Serif\" font-size=\"3.00\" fill=\"#444443\"> </text>\n",
       "</g>\n",
       "<!-- node140546505414208&#45;&gt;node140547309352848 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>node140546505414208:c&#45;&gt;node140547309352848</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M73.87,-81.85C71.57,-77.41 67.13,-68.84 62.49,-59.87\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"74.76\" cy=\"-83.58\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"63.57,-58.92 60.49,-56.02 61.09,-60.21 63.57,-58.92\"/>\n",
       "</g>\n",
       "<!-- node140546505413632 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>node140546505413632</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"165,-56 100,-56 100,0 165,0 165,-56\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"102.5,-40 102.5,-54 163.5,-54 163.5,-40 102.5,-40\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"102.5,-40 163.5,-40 \"/>\n",
       "<text text-anchor=\"start\" x=\"123\" y=\"-44.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">Tree</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"102.5,-38 102.5,-40 163.5,-40 163.5,-38 102.5,-38\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"102.5,-24 102.5,-38 133.5,-38 133.5,-24 102.5,-24\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"133.5,-24 133.5,-38 \"/>\n",
       "<text text-anchor=\"start\" x=\"103.5\" y=\"-28.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">value </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"133.5,-24 133.5,-38 163.5,-38 163.5,-24 133.5,-24\"/>\n",
       "<text text-anchor=\"start\" x=\"134.5\" y=\"-28.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;april&#39;</text>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"102.5,-21 163.5,-21 \"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"102.5,-19 102.5,-21 163.5,-21 163.5,-19 102.5,-19\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"102.5,-10 102.5,-19 133.5,-19 133.5,-10 102.5,-10\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"133.5,-10 133.5,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"103.5\" y=\"-13.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"6.00\" fill=\"#444443\">left</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"133.5,-10 133.5,-19 133.5,-19 133.5,-10 133.5,-10\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"133.5,-10 133.5,-19 163.5,-19 163.5,-10 133.5,-10\"/>\n",
       "<text text-anchor=\"start\" x=\"150.5\" y=\"-13.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"6.00\" fill=\"#444443\">right</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"102.5,-7 102.5,-10 133.5,-10 133.5,-7 102.5,-7\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"133.5,-7 133.5,-10 \"/>\n",
       "<text text-anchor=\"start\" x=\"117.86\" y=\"-8.1\" font-family=\"Helvetica,sans-Serif\" font-size=\"1.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"133.5,-7 133.5,-10 133.5,-10 133.5,-7 133.5,-7\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"133.5,-7 133.5,-10 163.5,-10 163.5,-7 133.5,-7\"/>\n",
       "<text text-anchor=\"start\" x=\"148.36\" y=\"-8.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"1.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"102.5,-2 102.5,-7 133.5,-7 133.5,-2 102.5,-2\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"133.5,-2 133.5,-7 \"/>\n",
       "<text text-anchor=\"start\" x=\"117.5\" y=\"-3.6\" font-family=\"Helvetica,sans-Serif\" font-size=\"3.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"133.5,-2 133.5,-7 133.5,-7 133.5,-2 133.5,-2\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"133.5,-2 133.5,-7 163.5,-7 163.5,-2 133.5,-2\"/>\n",
       "<text text-anchor=\"start\" x=\"148\" y=\"-3.6\" font-family=\"Helvetica,sans-Serif\" font-size=\"3.00\" fill=\"#444443\"> </text>\n",
       "</g>\n",
       "<!-- node140546505414208&#45;&gt;node140546505413632 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>node140546505414208:c&#45;&gt;node140546505413632</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M105.13,-81.85C107.43,-77.41 111.87,-68.84 116.51,-59.87\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"104.24\" cy=\"-83.58\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"117.91,-60.21 118.51,-56.02 115.43,-58.92 117.91,-60.21\"/>\n",
       "</g>\n",
       "<!-- node140546505415648 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>node140546505415648</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"227.5,-134 159.5,-134 159.5,-78 227.5,-78 227.5,-134\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"161.5,-118 161.5,-132 225.5,-132 225.5,-118 161.5,-118\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"161.5,-118 225.5,-118 \"/>\n",
       "<text text-anchor=\"start\" x=\"183.5\" y=\"-122.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">Tree</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"161.5,-116 161.5,-118 225.5,-118 225.5,-116 161.5,-116\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"161.5,-102 161.5,-116 192.5,-116 192.5,-102 161.5,-102\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"192.5,-102 192.5,-116 \"/>\n",
       "<text text-anchor=\"start\" x=\"162.5\" y=\"-106.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">value </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"192.5,-102 192.5,-116 225.5,-116 225.5,-102 192.5,-102\"/>\n",
       "<text text-anchor=\"start\" x=\"193.5\" y=\"-106.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;mike&#39;</text>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"161.5,-99 225.5,-99 \"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"161.5,-97 161.5,-99 225.5,-99 225.5,-97 161.5,-97\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"161.5,-88 161.5,-97 192.5,-97 192.5,-88 161.5,-88\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"192.5,-88 192.5,-97 \"/>\n",
       "<text text-anchor=\"start\" x=\"162.5\" y=\"-91.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"6.00\" fill=\"#444443\">left</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"192.5,-88 192.5,-97 192.5,-97 192.5,-88 192.5,-88\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"192.5,-88 192.5,-97 225.5,-97 225.5,-88 192.5,-88\"/>\n",
       "<text text-anchor=\"start\" x=\"212.5\" y=\"-91.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"6.00\" fill=\"#444443\">right</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"161.5,-85 161.5,-88 192.5,-88 192.5,-85 161.5,-85\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"192.5,-85 192.5,-88 \"/>\n",
       "<text text-anchor=\"start\" x=\"176.86\" y=\"-86.1\" font-family=\"Helvetica,sans-Serif\" font-size=\"1.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"192.5,-85 192.5,-88 192.5,-88 192.5,-85 192.5,-85\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"192.5,-85 192.5,-88 225.5,-88 225.5,-85 192.5,-85\"/>\n",
       "<text text-anchor=\"start\" x=\"208.86\" y=\"-86.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"1.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"161.5,-80 161.5,-85 192.5,-85 192.5,-80 161.5,-80\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"192.5,-80 192.5,-85 \"/>\n",
       "<text text-anchor=\"start\" x=\"176.5\" y=\"-81.6\" font-family=\"Helvetica,sans-Serif\" font-size=\"3.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"192.5,-80 192.5,-85 192.5,-85 192.5,-80 192.5,-80\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"192.5,-80 192.5,-85 225.5,-85 225.5,-80 192.5,-80\"/>\n",
       "<text text-anchor=\"start\" x=\"208.5\" y=\"-81.6\" font-family=\"Helvetica,sans-Serif\" font-size=\"3.00\" fill=\"#444443\"> </text>\n",
       "</g>\n",
       "<!-- node140547309247840&#45;&gt;node140546505415648 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>node140547309247840:c&#45;&gt;node140546505415648</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M193.5,-159.52C193.5,-155.05 193.5,-146.86 193.5,-138.26\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"193.5\" cy=\"-161.4\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"194.9,-138.02 193.5,-134.02 192.1,-138.02 194.9,-138.02\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b872b940>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "class Tree:\n",
    "    def __init__(self, value, left=None, right=None):\n",
    "        self.value = value\n",
    "        self.left = left\n",
    "        self.right = right\n",
    "        \n",
    "root = Tree('parrt',\n",
    "            Tree('mary',\n",
    "                 Tree('jim',\n",
    "                      Tree('srinivasan'),\n",
    "                      Tree('april'))),\n",
    "            Tree('xue',None,Tree('mike')))\n",
    "\n",
    "treeviz(root)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"344pt\" height=\"441pt\"\n",
       " viewBox=\"0.00 0.00 344.00 441.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 437)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-437 340,-437 340,4 -4,4\"/>\n",
       "<g id=\"clust2\" class=\"cluster\">\n",
       "<title>cluster1</title>\n",
       "</g>\n",
       "<!-- node140546768435216 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140546768435216</title>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"71,-259 0,-259 0,-161 71,-161 71,-259\"/>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"2.5,-243 2.5,-257 69.5,-257 69.5,-243 2.5,-243\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"2.5,-243 69.5,-243 \"/>\n",
       "<text text-anchor=\"start\" x=\"20\" y=\"-247.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">globals</text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"2.5,-241 2.5,-243 69.5,-243 69.5,-241 2.5,-241\"/>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"2.5,-227 2.5,-241 45.5,-241 45.5,-227 2.5,-227\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"45.5,-227 45.5,-241 \"/>\n",
       "<text text-anchor=\"start\" x=\"32.5\" y=\"-231.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">N </text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"45.5,-227 45.5,-241 69.5,-241 69.5,-227 45.5,-227\"/>\n",
       "<text text-anchor=\"start\" x=\"46.5\" y=\"-231.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> 100</text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"2.5,-225 2.5,-227 69.5,-227 69.5,-225 2.5,-225\"/>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"2.5,-211 2.5,-225 45.5,-225 45.5,-211 2.5,-211\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"45.5,-211 45.5,-225 \"/>\n",
       "<text text-anchor=\"start\" x=\"17.5\" y=\"-215.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">table </text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"45.5,-211 45.5,-225 69.5,-225 69.5,-211 45.5,-211\"/>\n",
       "<text text-anchor=\"start\" x=\"46.5\" y=\"-215.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"2.5,-209 2.5,-211 69.5,-211 69.5,-209 2.5,-209\"/>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"2.5,-195 2.5,-209 45.5,-209 45.5,-195 2.5,-195\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"45.5,-195 45.5,-209 \"/>\n",
       "<text text-anchor=\"start\" x=\"16.5\" y=\"-199.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">head </text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"45.5,-195 45.5,-209 69.5,-209 69.5,-195 45.5,-195\"/>\n",
       "<text text-anchor=\"start\" x=\"46.5\" y=\"-199.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"2.5,-193 2.5,-195 69.5,-195 69.5,-193 2.5,-193\"/>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"2.5,-179 2.5,-193 45.5,-193 45.5,-179 2.5,-179\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"45.5,-179 45.5,-193 \"/>\n",
       "<text text-anchor=\"start\" x=\"34.5\" y=\"-183.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">a </text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"45.5,-179 45.5,-193 69.5,-193 69.5,-179 45.5,-179\"/>\n",
       "<text text-anchor=\"start\" x=\"46.5\" y=\"-183.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"2.5,-177 2.5,-179 69.5,-179 69.5,-177 2.5,-177\"/>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"2.5,-163 2.5,-177 45.5,-177 45.5,-163 2.5,-163\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"45.5,-163 45.5,-177 \"/>\n",
       "<text text-anchor=\"start\" x=\"3.5\" y=\"-167.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">courses </text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"45.5,-163 45.5,-177 69.5,-177 69.5,-163 45.5,-163\"/>\n",
       "<text text-anchor=\"start\" x=\"46.5\" y=\"-167.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "</g>\n",
       "<!-- node140547309250896 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>node140547309250896</title>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"52.5,-154 18.5,-154 18.5,-104 52.5,-104 52.5,-154\"/>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"20.5,-138 20.5,-152 50.5,-152 50.5,-138 20.5,-138\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"20.5,-138 50.5,-138 \"/>\n",
       "<text text-anchor=\"start\" x=\"33.5\" y=\"-142.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">f</text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"20.5,-136 20.5,-138 50.5,-138 50.5,-136 20.5,-136\"/>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"20.5,-122 20.5,-136 32.5,-136 32.5,-122 20.5,-122\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"32.5,-122 32.5,-136 \"/>\n",
       "<text text-anchor=\"start\" x=\"22.5\" y=\"-126.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">x </text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"32.5,-122 32.5,-136 50.5,-136 50.5,-122 32.5,-122\"/>\n",
       "<text text-anchor=\"start\" x=\"33.5\" y=\"-126.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> 99</text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"20.5,-120 20.5,-122 50.5,-122 50.5,-120 20.5,-120\"/>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"20.5,-106 20.5,-120 32.5,-120 32.5,-106 20.5,-106\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"32.5,-106 32.5,-120 \"/>\n",
       "<text text-anchor=\"start\" x=\"21.5\" y=\"-110.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">a </text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"32.5,-106 32.5,-120 50.5,-120 50.5,-106 32.5,-106\"/>\n",
       "<text text-anchor=\"start\" x=\"33.5\" y=\"-110.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "</g>\n",
       "<!-- node140546768435216&#45;&gt;node140547309250896 -->\n",
       "<!-- node140547309308512 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>node140547309308512</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"149,-299 87,-299 87,-249 149,-249 149,-299\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"89,-283 89,-297 147,-297 147,-283 89,-283\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"89,-283 147,-283 \"/>\n",
       "<text text-anchor=\"start\" x=\"106\" y=\"-287.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">Node</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"89,-281 89,-283 147,-283 147,-281 89,-281\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"89,-267 89,-281 120,-281 120,-267 89,-267\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"120,-267 120,-281 \"/>\n",
       "<text text-anchor=\"start\" x=\"90\" y=\"-271.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">value </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"120,-267 120,-281 147,-281 147,-267 120,-267\"/>\n",
       "<text text-anchor=\"start\" x=\"121\" y=\"-271.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;xue&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"89,-265 89,-267 147,-267 147,-265 89,-265\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"89,-251 89,-265 120,-265 120,-251 89,-251\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"120,-251 120,-265 \"/>\n",
       "<text text-anchor=\"start\" x=\"95\" y=\"-255.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">next </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"120,-251 120,-265 147,-265 147,-251 120,-251\"/>\n",
       "<text text-anchor=\"start\" x=\"121\" y=\"-255.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "</g>\n",
       "<!-- node140546768435216&#45;&gt;node140547309308512 -->\n",
       "<g id=\"edge17\" class=\"edge\">\n",
       "<title>node140546768435216:c&#45;&gt;node140547309308512</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M60.56,-204.54C65.93,-211.14 80.81,-229.45 93.94,-245.62\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"59.51\" cy=\"-203.24\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"92.93,-246.6 96.54,-248.82 95.1,-244.83 92.93,-246.6\"/>\n",
       "</g>\n",
       "<!-- node140547309280256 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>node140547309280256</title>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"125,-415 111,-415 111,-333 125,-333 125,-415\"/>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"112,-398 112,-414 124,-414 124,-398 112,-398\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"112,-398 124,-398 \"/>\n",
       "<text text-anchor=\"start\" x=\"115\" y=\"-403.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"112,-382 112,-398 124,-398 124,-382 112,-382\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"112,-382 124,-382 \"/>\n",
       "<text text-anchor=\"start\" x=\"115\" y=\"-387.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"112,-366 112,-382 124,-382 124,-366 112,-366\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"112,-366 124,-366 \"/>\n",
       "<text text-anchor=\"start\" x=\"115\" y=\"-371.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"112,-350 112,-366 124,-366 124,-350 112,-350\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"112,-350 124,-350 \"/>\n",
       "<text text-anchor=\"start\" x=\"115\" y=\"-355.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"112,-334 112,-350 124,-350 124,-334 112,-334\"/>\n",
       "<text text-anchor=\"start\" x=\"115\" y=\"-339.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">4</text>\n",
       "</g>\n",
       "<!-- node140546768435216&#45;&gt;node140547309280256 -->\n",
       "<g id=\"edge16\" class=\"edge\">\n",
       "<title>node140546768435216:c&#45;&gt;node140547309280256</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M58.88,-221.21C60.35,-233.08 66.26,-275.47 79,-308 86.84,-328.03 100.07,-349.26 108.66,-362.07\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"58.69\" cy=\"-219.59\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"107.55,-362.93 110.96,-365.46 109.87,-361.36 107.55,-362.93\"/>\n",
       "</g>\n",
       "<!-- node140546768462784 -->\n",
       "<g id=\"node14\" class=\"node\">\n",
       "<title>node140546768462784</title>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"126.5,-210 109.5,-210 109.5,-162 126.5,-162 126.5,-210\"/>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"111,-195 111,-209 126,-209 126,-195 111,-195\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"111,-195 126,-195 \"/>\n",
       "<text text-anchor=\"start\" x=\"112\" y=\"-199.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">set</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"111,-179 111,-195 126,-195 126,-179 111,-179\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"111,-179 126,-179 \"/>\n",
       "<text text-anchor=\"start\" x=\"114\" y=\"-184.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\"> </text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"111,-163 111,-179 126,-179 126,-163 111,-163\"/>\n",
       "<text text-anchor=\"start\" x=\"114\" y=\"-168.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\"> </text>\n",
       "</g>\n",
       "<!-- node140546768435216&#45;&gt;node140546768462784 -->\n",
       "<g id=\"edge18\" class=\"edge\">\n",
       "<title>node140546768435216:c&#45;&gt;node140546768462784</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M61.83,-186C70.02,-186 91.45,-186 105.07,-186\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"60.1\" cy=\"-186\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"105.35,-187.4 109.35,-186 105.35,-184.6 105.35,-187.4\"/>\n",
       "</g>\n",
       "<!-- node140547309325184 -->\n",
       "<g id=\"node17\" class=\"node\">\n",
       "<title>node140547309325184</title>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"125,-89 111,-89 111,-39 125,-39 125,-89\"/>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"112,-72 112,-88 124,-88 124,-72 112,-72\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"112,-72 124,-72 \"/>\n",
       "<text text-anchor=\"start\" x=\"115\" y=\"-77.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"112,-56 112,-72 124,-72 124,-56 112,-56\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"112,-56 124,-56 \"/>\n",
       "<text text-anchor=\"start\" x=\"115\" y=\"-61.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"112,-40 112,-56 124,-56 124,-40 112,-40\"/>\n",
       "<text text-anchor=\"start\" x=\"115\" y=\"-45.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">2</text>\n",
       "</g>\n",
       "<!-- node140546768435216&#45;&gt;node140547309325184 -->\n",
       "<g id=\"edge19\" class=\"edge\">\n",
       "<title>node140546768435216:c&#45;&gt;node140547309325184</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M61.24,-167.62C63.96,-165.15 68.12,-161.1 71,-157 87.51,-133.51 101.29,-103.22 109.34,-83.71\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"59.71\" cy=\"-168.95\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"110.66,-84.18 110.87,-79.95 108.07,-83.13 110.66,-84.18\"/>\n",
       "</g>\n",
       "<!-- node140546768343680 -->\n",
       "<g id=\"node21\" class=\"node\">\n",
       "<title>node140546768343680</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"145,-32 91,-32 91,0 145,0 145,-32\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"92,-19 92,-31 111,-31 111,-19 92,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"92,-19 111,-19 111,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"98.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"111,-19 111,-31 144,-31 144,-19 111,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"111,-19 144,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"124.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"92,-1 92,-19 111,-19 111,-1 92,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"111,-1 111,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"95\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;hi&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"111,-1 111,-19 144,-19 144,-1 111,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"113\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;mom&#39;</text>\n",
       "</g>\n",
       "<!-- node140547309250896&#45;&gt;node140546768343680 -->\n",
       "<g id=\"edge20\" class=\"edge\">\n",
       "<title>node140547309250896:c&#45;&gt;node140546768343680</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M43.27,-109.64C46.1,-98.02 56.88,-59.06 79,-36 81.45,-33.45 84.29,-31.15 87.31,-29.11\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"42.86\" cy=\"-111.44\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"88.28,-30.15 90.9,-26.83 86.78,-27.79 88.28,-30.15\"/>\n",
       "</g>\n",
       "<!-- node140547309308560 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>node140547309308560</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"231,-299 163,-299 163,-249 231,-249 231,-299\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"165,-283 165,-297 229,-297 229,-283 165,-283\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"165,-283 229,-283 \"/>\n",
       "<text text-anchor=\"start\" x=\"185\" y=\"-287.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">Node</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"165,-281 165,-283 229,-283 229,-281 165,-281\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"165,-267 165,-281 196,-281 196,-267 165,-267\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"196,-267 196,-281 \"/>\n",
       "<text text-anchor=\"start\" x=\"166\" y=\"-271.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">value </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"196,-267 196,-281 229,-281 229,-267 196,-267\"/>\n",
       "<text text-anchor=\"start\" x=\"197\" y=\"-271.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;parrt&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"165,-265 165,-267 229,-267 229,-265 165,-265\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"165,-251 165,-265 196,-265 196,-251 165,-251\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"196,-251 196,-265 \"/>\n",
       "<text text-anchor=\"start\" x=\"171\" y=\"-255.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">next </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"196,-251 196,-265 229,-265 229,-251 196,-251\"/>\n",
       "<text text-anchor=\"start\" x=\"197\" y=\"-255.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "</g>\n",
       "<!-- node140547309307408 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>node140547309307408</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"320,-299 245,-299 245,-249 320,-249 320,-299\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"247.5,-283 247.5,-297 318.5,-297 318.5,-283 247.5,-283\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"247.5,-283 318.5,-283 \"/>\n",
       "<text text-anchor=\"start\" x=\"271\" y=\"-287.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">Node</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"247.5,-281 247.5,-283 318.5,-283 318.5,-281 247.5,-281\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"247.5,-267 247.5,-281 278.5,-281 278.5,-267 247.5,-267\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"278.5,-267 278.5,-281 \"/>\n",
       "<text text-anchor=\"start\" x=\"248.5\" y=\"-271.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">value </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"278.5,-267 278.5,-281 318.5,-281 318.5,-267 278.5,-267\"/>\n",
       "<text text-anchor=\"start\" x=\"279.5\" y=\"-271.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;tombu&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"247.5,-265 247.5,-267 318.5,-267 318.5,-265 247.5,-265\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"247.5,-251 247.5,-265 278.5,-265 278.5,-251 247.5,-251\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"278.5,-251 278.5,-265 \"/>\n",
       "<text text-anchor=\"start\" x=\"253.5\" y=\"-255.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">next </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"278.5,-251 278.5,-265 318.5,-265 318.5,-251 278.5,-251\"/>\n",
       "<text text-anchor=\"start\" x=\"279.5\" y=\"-255.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "</g>\n",
       "<!-- node140547309308560&#45;&gt;node140547309307408 -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>node140547309308560:c&#45;&gt;node140547309307408</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M217.26,-258.77C221.93,-259.88 231.05,-262.04 240.99,-264.4\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"215.56\" cy=\"-258.37\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"240.77,-265.78 244.98,-265.34 241.41,-263.06 240.77,-265.78\"/>\n",
       "</g>\n",
       "<!-- node140547309308512&#45;&gt;node140547309308560 -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>node140547309308512:c&#45;&gt;node140547309308560</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M138.22,-258.84C142.35,-259.93 150.03,-261.94 158.46,-264.15\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"136.55\" cy=\"-258.41\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"158.42,-265.59 162.64,-265.25 159.13,-262.88 158.42,-265.59\"/>\n",
       "</g>\n",
       "<!-- node140546768300800 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>node140546768300800</title>\n",
       "<text text-anchor=\"start\" x=\"180\" y=\"-423.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140546768300800 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>node140547309280256:0&#45;&gt;node140546768300800:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M125,-406C148.31,-406 151.87,-423.72 172.87,-425.8\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"172.94,-427.21 177,-426 173.07,-424.41 172.94,-427.21\"/>\n",
       "</g>\n",
       "<!-- node140547309304064 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>node140547309304064</title>\n",
       "<text text-anchor=\"start\" x=\"180\" y=\"-402.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140547309304064 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>node140547309280256:1&#45;&gt;node140547309304064:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M125,-390C147.64,-390 152.42,-403.29 172.97,-404.85\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"172.95,-406.25 177,-405 173.05,-403.45 172.95,-406.25\"/>\n",
       "</g>\n",
       "<!-- node140546768340288 -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>node140546768340288</title>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"204,-391 190,-391 190,-357 204,-357 204,-391\"/>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"191,-374 191,-390 203,-390 203,-374 191,-374\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"191,-374 203,-374 \"/>\n",
       "<text text-anchor=\"start\" x=\"194\" y=\"-379.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"191,-358 191,-374 203,-374 203,-358 191,-358\"/>\n",
       "<text text-anchor=\"start\" x=\"194\" y=\"-363.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140546768340288 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>node140547309280256:2&#45;&gt;node140546768340288:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M125,-374C152,-374 159.78,-374 184.83,-374\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"185,-375.4 189,-374 185,-372.6 185,-375.4\"/>\n",
       "</g>\n",
       "<!-- node140546768474816 -->\n",
       "<g id=\"node12\" class=\"node\">\n",
       "<title>node140546768474816</title>\n",
       "<text text-anchor=\"start\" x=\"180\" y=\"-340.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140546768474816 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>node140547309280256:3&#45;&gt;node140546768474816:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M125,-358C147.64,-358 152.42,-344.71 172.97,-343.15\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"173.05,-344.55 177,-343 172.95,-341.75 173.05,-344.55\"/>\n",
       "</g>\n",
       "<!-- node140546768341632 -->\n",
       "<g id=\"node13\" class=\"node\">\n",
       "<title>node140546768341632</title>\n",
       "<text text-anchor=\"start\" x=\"180\" y=\"-319.8\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"9.00\" fill=\"#444443\">empty list</text>\n",
       "</g>\n",
       "<!-- node140547309280256&#45;&gt;node140546768341632 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>node140547309280256:4&#45;&gt;node140546768341632:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M125,-342C148.31,-342 151.87,-324.28 172.87,-322.2\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"173.07,-323.59 177,-322 172.94,-320.79 173.07,-323.59\"/>\n",
       "</g>\n",
       "<!-- node140547309156928 -->\n",
       "<g id=\"node10\" class=\"node\">\n",
       "<title>node140547309156928</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"300.5,-409 264.5,-409 264.5,-377 300.5,-377 300.5,-409\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"265.5,-396 265.5,-408 282.5,-408 282.5,-396 265.5,-396\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"265.5,-396 282.5,-396 282.5,-408 \"/>\n",
       "<text text-anchor=\"start\" x=\"271\" y=\"-399.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"282.5,-396 282.5,-408 299.5,-408 299.5,-396 282.5,-396\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"282.5,-396 299.5,-396 \"/>\n",
       "<text text-anchor=\"start\" x=\"288\" y=\"-399.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"265.5,-378 265.5,-396 282.5,-396 282.5,-378 265.5,-378\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"282.5,-378 282.5,-396 \"/>\n",
       "<text text-anchor=\"start\" x=\"268.5\" y=\"-384.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;a&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"282.5,-378 282.5,-396 299.5,-396 299.5,-378 282.5,-378\"/>\n",
       "<text text-anchor=\"start\" x=\"284.5\" y=\"-384.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">99</text>\n",
       "</g>\n",
       "<!-- node140546768340288&#45;&gt;node140547309156928 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>node140546768340288:0&#45;&gt;node140547309156928:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M204,-382C229.42,-382 235.92,-391.83 259.27,-392.9\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"259.47,-394.31 263.5,-393 259.53,-391.51 259.47,-394.31\"/>\n",
       "</g>\n",
       "<!-- node140547309105664 -->\n",
       "<g id=\"node11\" class=\"node\">\n",
       "<title>node140547309105664</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"299,-370 266,-370 266,-338 299,-338 299,-370\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"267.5,-357 267.5,-369 281.5,-369 281.5,-357 267.5,-357\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"267.5,-357 281.5,-357 281.5,-369 \"/>\n",
       "<text text-anchor=\"start\" x=\"271.5\" y=\"-360.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"281.5,-357 281.5,-369 298.5,-369 298.5,-357 281.5,-357\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"281.5,-357 298.5,-357 \"/>\n",
       "<text text-anchor=\"start\" x=\"287\" y=\"-360.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"267.5,-339 267.5,-357 281.5,-357 281.5,-339 267.5,-339\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"281.5,-339 281.5,-357 \"/>\n",
       "<text text-anchor=\"start\" x=\"270.5\" y=\"-345.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;f&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"281.5,-339 281.5,-357 298.5,-357 298.5,-339 281.5,-339\"/>\n",
       "<text text-anchor=\"start\" x=\"283.5\" y=\"-345.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">99</text>\n",
       "</g>\n",
       "<!-- node140546768340288&#45;&gt;node140547309105664 -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>node140546768340288:1&#45;&gt;node140547309105664:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M204,-366C230.02,-366 236.45,-355.19 260.49,-354.09\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"260.53,-355.49 264.5,-354 260.47,-352.69 260.53,-355.49\"/>\n",
       "</g>\n",
       "<!-- node140547309307648 -->\n",
       "<g id=\"node15\" class=\"node\">\n",
       "<title>node140547309307648</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"231,-233 163,-233 163,-183 231,-183 231,-233\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"165,-217 165,-231 229,-231 229,-217 165,-217\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"165,-217 229,-217 \"/>\n",
       "<text text-anchor=\"start\" x=\"185\" y=\"-221.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">Node</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"165,-215 165,-217 229,-217 229,-215 165,-215\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"165,-201 165,-215 196,-215 196,-201 165,-201\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"196,-201 196,-215 \"/>\n",
       "<text text-anchor=\"start\" x=\"166\" y=\"-205.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">value </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"196,-201 196,-215 229,-215 229,-201 196,-201\"/>\n",
       "<text text-anchor=\"start\" x=\"197\" y=\"-205.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;parrt&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"165,-199 165,-201 229,-201 229,-199 165,-199\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"165,-185 165,-199 196,-199 196,-185 165,-185\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"196,-185 196,-199 \"/>\n",
       "<text text-anchor=\"start\" x=\"171\" y=\"-189.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">next </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"196,-185 196,-199 229,-199 229,-185 196,-185\"/>\n",
       "<text text-anchor=\"start\" x=\"197\" y=\"-189.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "</g>\n",
       "<!-- node140546768462784&#45;&gt;node140547309307648 -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>node140546768462784:0&#45;&gt;node140547309307648:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M127,-187C143.58,-187 143.94,-204.55 157.73,-207.56\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"157.88,-208.98 162,-208 158.16,-206.2 157.88,-208.98\"/>\n",
       "</g>\n",
       "<!-- node140547309306496 -->\n",
       "<g id=\"node16\" class=\"node\">\n",
       "<title>node140547309306496</title>\n",
       "<polygon fill=\"#fefecd\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"231.5,-176 162.5,-176 162.5,-126 231.5,-126 231.5,-176\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"165,-160 165,-174 230,-174 230,-160 165,-160\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"165,-160 230,-160 \"/>\n",
       "<text text-anchor=\"start\" x=\"185.5\" y=\"-164.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">Node</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"165,-158 165,-160 230,-160 230,-158 165,-158\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"165,-144 165,-158 196,-158 196,-144 165,-144\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"196,-144 196,-158 \"/>\n",
       "<text text-anchor=\"start\" x=\"166\" y=\"-148.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">value </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"196,-144 196,-158 230,-158 230,-144 196,-144\"/>\n",
       "<text text-anchor=\"start\" x=\"197\" y=\"-148.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#39;mary&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"165,-142 165,-144 230,-144 230,-142 165,-142\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"165,-128 165,-142 196,-142 196,-128 165,-128\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"196,-128 196,-142 \"/>\n",
       "<text text-anchor=\"start\" x=\"171\" y=\"-132.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">next </text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"196,-128 196,-142 230,-142 230,-128 196,-128\"/>\n",
       "<text text-anchor=\"start\" x=\"197\" y=\"-132.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "</g>\n",
       "<!-- node140546768462784&#45;&gt;node140547309306496 -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>node140546768462784:1&#45;&gt;node140547309306496:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M127,-171C143.03,-171 143.51,-154.29 156.87,-151.42\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"157.16,-152.8 161,-151 156.88,-150.01 157.16,-152.8\"/>\n",
       "</g>\n",
       "<!-- node140547309388864 -->\n",
       "<g id=\"node18\" class=\"node\">\n",
       "<title>node140547309388864</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"234,-119 160,-119 160,-87 234,-87 234,-119\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"161,-106 161,-118 216,-118 216,-106 161,-106\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"161,-106 216,-106 216,-118 \"/>\n",
       "<text text-anchor=\"start\" x=\"185.5\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"216,-106 216,-118 233,-118 233,-106 216,-106\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"216,-106 233,-106 \"/>\n",
       "<text text-anchor=\"start\" x=\"221.5\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"161,-88 161,-106 216,-106 216,-88 161,-88\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"216,-88 216,-106 \"/>\n",
       "<text text-anchor=\"start\" x=\"164\" y=\"-94.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;msan501&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"216,-88 216,-106 233,-106 233,-88 216,-88\"/>\n",
       "<text text-anchor=\"start\" x=\"218\" y=\"-94.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">51</text>\n",
       "</g>\n",
       "<!-- node140547309325184&#45;&gt;node140547309388864 -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>node140547309325184:0&#45;&gt;node140547309388864:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M125,-80C141.68,-80 141.03,-99.22 154.73,-102.52\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"154.87,-103.94 159,-103 155.18,-101.16 154.87,-103.94\"/>\n",
       "</g>\n",
       "<!-- node140546768341888 -->\n",
       "<g id=\"node19\" class=\"node\">\n",
       "<title>node140546768341888</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"234,-80 160,-80 160,-48 234,-48 234,-80\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"161,-67 161,-79 216,-79 216,-67 161,-67\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"161,-67 216,-67 216,-79 \"/>\n",
       "<text text-anchor=\"start\" x=\"185.5\" y=\"-70.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"216,-67 216,-79 233,-79 233,-67 216,-67\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"216,-67 233,-67 \"/>\n",
       "<text text-anchor=\"start\" x=\"221.5\" y=\"-70.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"161,-49 161,-67 216,-67 216,-49 161,-49\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"216,-49 216,-67 \"/>\n",
       "<text text-anchor=\"start\" x=\"164\" y=\"-55.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;msan502&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"216,-49 216,-67 233,-67 233,-49 216,-49\"/>\n",
       "<text text-anchor=\"start\" x=\"218\" y=\"-55.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">32</text>\n",
       "</g>\n",
       "<!-- node140547309325184&#45;&gt;node140546768341888 -->\n",
       "<g id=\"edge14\" class=\"edge\">\n",
       "<title>node140547309325184:1&#45;&gt;node140546768341888:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M125,-64C138.58,-64 143,-64 154.72,-64\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"155,-65.4 159,-64 155,-62.6 155,-65.4\"/>\n",
       "</g>\n",
       "<!-- node140546768341120 -->\n",
       "<g id=\"node20\" class=\"node\">\n",
       "<title>node140546768341120</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"237,-41 157,-41 157,-9 237,-9 237,-41\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"158,-28 158,-40 213,-40 213,-28 158,-28\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"158,-28 213,-28 213,-40 \"/>\n",
       "<text text-anchor=\"start\" x=\"182.5\" y=\"-31.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"213,-28 213,-40 236,-40 236,-28 213,-28\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"213,-28 236,-28 \"/>\n",
       "<text text-anchor=\"start\" x=\"221.5\" y=\"-31.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"158,-10 158,-28 213,-28 213,-10 158,-10\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"213,-10 213,-28 \"/>\n",
       "<text text-anchor=\"start\" x=\"161\" y=\"-16.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">&#39;msan692&#39;</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"213,-10 213,-28 236,-28 236,-10 213,-10\"/>\n",
       "<text text-anchor=\"start\" x=\"215\" y=\"-16.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">101</text>\n",
       "</g>\n",
       "<!-- node140547309325184&#45;&gt;node140546768341120 -->\n",
       "<g id=\"edge15\" class=\"edge\">\n",
       "<title>node140547309325184:2&#45;&gt;node140546768341120:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M125,-48C137.13,-48 139.69,-42.78 149,-35 151.87,-32.6 151.96,-29.05 153.3,-26.88\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"154.07,-28.06 157,-25 152.8,-25.57 154.07,-28.06\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd398318070>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from IPython.display import display\n",
    "\n",
    "N = 100\n",
    "\n",
    "def f(x):\n",
    "    a = ['hi','mom']\n",
    "    thestack = callsviz(varnames=['table','x','head','courses','N','a'])\n",
    "    display(thestack)\n",
    "    \n",
    "f(99)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If you'd like to save an image from jupyter, use `render()`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "    digraph G {\n",
      "        nodesep=.1;\n",
      "        ranksep=.1;\n",
      "        rankdir=LR;\n",
      "        node [penwidth=\n"
     ]
    }
   ],
   "source": [
    "def f(x):\n",
    "    thestack = callsviz(varnames=['table','x','tree','head','courses'])\n",
    "    print(thestack.source[:100])  # show first 100 char of graphviz syntax\n",
    "    thestack.render(\"/tmp/t\") # save as PDF\n",
    "    \n",
    "f(99)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Numpy viz"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"63pt\" height=\"44pt\"\n",
       " viewBox=\"0.00 0.00 63.00 44.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 40)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-40 59,-40 59,4 -4,4\"/>\n",
       "<!-- node140546505746112 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140546505746112</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"55,-36 0,-36 0,0 55,0 55,-36\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-18 1.5,-35 13.5,-35 13.5,-18 1.5,-18\"/>\n",
       "<text text-anchor=\"start\" x=\"4.5\" y=\"-24\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"13.5,-18 13.5,-35 25.5,-35 25.5,-18 13.5,-18\"/>\n",
       "<text text-anchor=\"start\" x=\"16.5\" y=\"-24\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"25.5,-18 25.5,-35 42.5,-35 42.5,-18 25.5,-18\"/>\n",
       "<text text-anchor=\"start\" x=\"31\" y=\"-24\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">8</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"42.5,-18 42.5,-35 54.5,-35 54.5,-18 42.5,-18\"/>\n",
       "<text text-anchor=\"start\" x=\"45.5\" y=\"-24\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">9</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-1 1.5,-18 13.5,-18 13.5,-1 1.5,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"4.5\" y=\"-7\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"13.5,-1 13.5,-18 25.5,-18 25.5,-1 13.5,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"16.5\" y=\"-7\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">4</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"25.5,-1 25.5,-18 42.5,-18 42.5,-1 25.5,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"28.5\" y=\"-7\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">22</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"42.5,-1 42.5,-18 54.5,-18 54.5,-1 42.5,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"45.5\" y=\"-7\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b8731d90>"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "A = np.array([[1,2,8,9],[3,4,22,1]])\n",
    "objviz(A)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[  0.,   1.,   2., ...,  97.,  98.,  99.],\n",
       "       [  1.,   2.,   3., ...,  98.,  99., 100.],\n",
       "       [  2.,   3.,   4., ...,  99., 100., 101.],\n",
       "       ...,\n",
       "       [ 97.,  98.,  99., ..., 194., 195., 196.],\n",
       "       [ 98.,  99., 100., ..., 195., 196., 197.],\n",
       "       [ 99., 100., 101., ..., 196., 197., 198.]])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "B = np.ones((100,100))\n",
    "for i in range(100):\n",
    "    for j in range(100):\n",
    "        B[i,j] = i+j\n",
    "B"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"63pt\" height=\"44pt\"\n",
       " viewBox=\"0.00 0.00 63.00 44.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 40)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-40 59,-40 59,4 -4,4\"/>\n",
       "<!-- node140546505746112 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140546505746112</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"55,-36 0,-36 0,0 55,0 55,-36\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-18 1.5,-35 13.5,-35 13.5,-18 1.5,-18\"/>\n",
       "<text text-anchor=\"start\" x=\"4.5\" y=\"-24\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"13.5,-18 13.5,-35 25.5,-35 25.5,-18 13.5,-18\"/>\n",
       "<text text-anchor=\"start\" x=\"16.5\" y=\"-24\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"25.5,-18 25.5,-35 42.5,-35 42.5,-18 25.5,-18\"/>\n",
       "<text text-anchor=\"start\" x=\"31\" y=\"-24\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">8</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"42.5,-18 42.5,-35 54.5,-35 54.5,-18 42.5,-18\"/>\n",
       "<text text-anchor=\"start\" x=\"45.5\" y=\"-24\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">9</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-1 1.5,-18 13.5,-18 13.5,-1 1.5,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"4.5\" y=\"-7\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"13.5,-1 13.5,-18 25.5,-18 25.5,-1 13.5,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"16.5\" y=\"-7\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">4</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"25.5,-1 25.5,-18 42.5,-18 42.5,-1 25.5,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"28.5\" y=\"-7\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">22</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"42.5,-1 42.5,-18 54.5,-18 54.5,-1 42.5,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"45.5\" y=\"-7\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b8731dc0>"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "matrixviz(A)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"269pt\" height=\"195pt\"\n",
       " viewBox=\"0.00 0.00 269.00 195.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 191)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-191 265,-191 265,4 -4,4\"/>\n",
       "<!-- node140547310425632 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547310425632</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"261,-187 0,-187 0,0 261,0 261,-187\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-168.5 1.5,-185.5 21.5,-185.5 21.5,-168.5 1.5,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"7\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">0.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"21.5,-168.5 21.5,-185.5 46.5,-185.5 46.5,-168.5 21.5,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"29.5\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"46.5,-168.5 46.5,-185.5 71.5,-185.5 71.5,-168.5 46.5,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"54.5\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">2.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"71.5,-168.5 71.5,-185.5 96.5,-185.5 96.5,-168.5 71.5,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"79.5\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">3.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"96.5,-168.5 96.5,-185.5 121.5,-185.5 121.5,-168.5 96.5,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"104.5\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">4.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"121.5,-168.5 121.5,-185.5 135.5,-185.5 135.5,-168.5 121.5,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"123.5\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"135.5,-168.5 135.5,-185.5 160.5,-185.5 160.5,-168.5 135.5,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"141\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">95.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"160.5,-168.5 160.5,-185.5 185.5,-185.5 185.5,-168.5 160.5,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"166\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">96.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"185.5,-168.5 185.5,-185.5 210.5,-185.5 210.5,-168.5 185.5,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"191\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">97.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"210.5,-168.5 210.5,-185.5 235.5,-185.5 235.5,-168.5 210.5,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"216\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">98.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"235.5,-168.5 235.5,-185.5 260.5,-185.5 260.5,-168.5 235.5,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"241\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-151.5 1.5,-168.5 21.5,-168.5 21.5,-151.5 1.5,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"7\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"21.5,-151.5 21.5,-168.5 46.5,-168.5 46.5,-151.5 21.5,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"29.5\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">2.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"46.5,-151.5 46.5,-168.5 71.5,-168.5 71.5,-151.5 46.5,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"54.5\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">3.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"71.5,-151.5 71.5,-168.5 96.5,-168.5 96.5,-151.5 71.5,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"79.5\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">4.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"96.5,-151.5 96.5,-168.5 121.5,-168.5 121.5,-151.5 96.5,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"104.5\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">5.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"121.5,-151.5 121.5,-168.5 135.5,-168.5 135.5,-151.5 121.5,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"123.5\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"135.5,-151.5 135.5,-168.5 160.5,-168.5 160.5,-151.5 135.5,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"141\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">96.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"160.5,-151.5 160.5,-168.5 185.5,-168.5 185.5,-151.5 160.5,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"166\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">97.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"185.5,-151.5 185.5,-168.5 210.5,-168.5 210.5,-151.5 185.5,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"191\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">98.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"210.5,-151.5 210.5,-168.5 235.5,-168.5 235.5,-151.5 210.5,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"216\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"235.5,-151.5 235.5,-168.5 260.5,-168.5 260.5,-151.5 235.5,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"238.5\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">100.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-134.5 1.5,-151.5 21.5,-151.5 21.5,-134.5 1.5,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"7\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">2.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"21.5,-134.5 21.5,-151.5 46.5,-151.5 46.5,-134.5 21.5,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"29.5\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">3.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"46.5,-134.5 46.5,-151.5 71.5,-151.5 71.5,-134.5 46.5,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"54.5\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">4.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"71.5,-134.5 71.5,-151.5 96.5,-151.5 96.5,-134.5 71.5,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"79.5\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">5.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"96.5,-134.5 96.5,-151.5 121.5,-151.5 121.5,-134.5 96.5,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"104.5\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">6.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"121.5,-134.5 121.5,-151.5 135.5,-151.5 135.5,-134.5 121.5,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"123.5\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"135.5,-134.5 135.5,-151.5 160.5,-151.5 160.5,-134.5 135.5,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"141\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">97.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"160.5,-134.5 160.5,-151.5 185.5,-151.5 185.5,-134.5 160.5,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"166\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">98.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"185.5,-134.5 185.5,-151.5 210.5,-151.5 210.5,-134.5 185.5,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"191\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"210.5,-134.5 210.5,-151.5 235.5,-151.5 235.5,-134.5 210.5,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"213.5\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">100.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"235.5,-134.5 235.5,-151.5 260.5,-151.5 260.5,-134.5 235.5,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"238.5\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">101.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-117.5 1.5,-134.5 21.5,-134.5 21.5,-117.5 1.5,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"7\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">3.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"21.5,-117.5 21.5,-134.5 46.5,-134.5 46.5,-117.5 21.5,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"29.5\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">4.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"46.5,-117.5 46.5,-134.5 71.5,-134.5 71.5,-117.5 46.5,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"54.5\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">5.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"71.5,-117.5 71.5,-134.5 96.5,-134.5 96.5,-117.5 71.5,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"79.5\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">6.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"96.5,-117.5 96.5,-134.5 121.5,-134.5 121.5,-117.5 96.5,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"104.5\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">7.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"121.5,-117.5 121.5,-134.5 135.5,-134.5 135.5,-117.5 121.5,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"123.5\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"135.5,-117.5 135.5,-134.5 160.5,-134.5 160.5,-117.5 135.5,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"141\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">98.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"160.5,-117.5 160.5,-134.5 185.5,-134.5 185.5,-117.5 160.5,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"166\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"185.5,-117.5 185.5,-134.5 210.5,-134.5 210.5,-117.5 185.5,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"188.5\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">100.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"210.5,-117.5 210.5,-134.5 235.5,-134.5 235.5,-117.5 210.5,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"213.5\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">101.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"235.5,-117.5 235.5,-134.5 260.5,-134.5 260.5,-117.5 235.5,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"238.5\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">102.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-100.5 1.5,-117.5 21.5,-117.5 21.5,-100.5 1.5,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"7\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">4.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"21.5,-100.5 21.5,-117.5 46.5,-117.5 46.5,-100.5 21.5,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"29.5\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">5.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"46.5,-100.5 46.5,-117.5 71.5,-117.5 71.5,-100.5 46.5,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"54.5\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">6.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"71.5,-100.5 71.5,-117.5 96.5,-117.5 96.5,-100.5 71.5,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"79.5\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">7.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"96.5,-100.5 96.5,-117.5 121.5,-117.5 121.5,-100.5 96.5,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"104.5\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">8.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"121.5,-100.5 121.5,-117.5 135.5,-117.5 135.5,-100.5 121.5,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"123.5\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"135.5,-100.5 135.5,-117.5 160.5,-117.5 160.5,-100.5 135.5,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"141\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"160.5,-100.5 160.5,-117.5 185.5,-117.5 185.5,-100.5 160.5,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"163.5\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">100.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"185.5,-100.5 185.5,-117.5 210.5,-117.5 210.5,-100.5 185.5,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"188.5\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">101.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"210.5,-100.5 210.5,-117.5 235.5,-117.5 235.5,-100.5 210.5,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"213.5\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">102.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"235.5,-100.5 235.5,-117.5 260.5,-117.5 260.5,-100.5 235.5,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"238.5\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">103.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-85.5 1.5,-100.5 21.5,-100.5 21.5,-85.5 1.5,-85.5\"/>\n",
       "<text text-anchor=\"start\" x=\"9.5\" y=\"-90.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">⋮</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"21.5,-85.5 21.5,-100.5 260.5,-100.5 260.5,-85.5 21.5,-85.5\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-68.5 1.5,-85.5 21.5,-85.5 21.5,-68.5 1.5,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"4.5\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">95.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"21.5,-68.5 21.5,-85.5 46.5,-85.5 46.5,-68.5 21.5,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"27\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">96.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"46.5,-68.5 46.5,-85.5 71.5,-85.5 71.5,-68.5 46.5,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"52\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">97.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"71.5,-68.5 71.5,-85.5 96.5,-85.5 96.5,-68.5 71.5,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"77\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">98.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"96.5,-68.5 96.5,-85.5 121.5,-85.5 121.5,-68.5 96.5,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"102\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"121.5,-68.5 121.5,-85.5 135.5,-85.5 135.5,-68.5 121.5,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"123.5\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"135.5,-68.5 135.5,-85.5 160.5,-85.5 160.5,-68.5 135.5,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"138.5\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">190.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"160.5,-68.5 160.5,-85.5 185.5,-85.5 185.5,-68.5 160.5,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"163.5\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">191.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"185.5,-68.5 185.5,-85.5 210.5,-85.5 210.5,-68.5 185.5,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"188.5\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">192.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"210.5,-68.5 210.5,-85.5 235.5,-85.5 235.5,-68.5 210.5,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"213.5\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">193.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"235.5,-68.5 235.5,-85.5 260.5,-85.5 260.5,-68.5 235.5,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"238.5\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">194.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-51.5 1.5,-68.5 21.5,-68.5 21.5,-51.5 1.5,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"4.5\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">96.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"21.5,-51.5 21.5,-68.5 46.5,-68.5 46.5,-51.5 21.5,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"27\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">97.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"46.5,-51.5 46.5,-68.5 71.5,-68.5 71.5,-51.5 46.5,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"52\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">98.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"71.5,-51.5 71.5,-68.5 96.5,-68.5 96.5,-51.5 71.5,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"77\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"96.5,-51.5 96.5,-68.5 121.5,-68.5 121.5,-51.5 96.5,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"99.5\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">100.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"121.5,-51.5 121.5,-68.5 135.5,-68.5 135.5,-51.5 121.5,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"123.5\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"135.5,-51.5 135.5,-68.5 160.5,-68.5 160.5,-51.5 135.5,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"138.5\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">191.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"160.5,-51.5 160.5,-68.5 185.5,-68.5 185.5,-51.5 160.5,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"163.5\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">192.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"185.5,-51.5 185.5,-68.5 210.5,-68.5 210.5,-51.5 185.5,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"188.5\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">193.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"210.5,-51.5 210.5,-68.5 235.5,-68.5 235.5,-51.5 210.5,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"213.5\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">194.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"235.5,-51.5 235.5,-68.5 260.5,-68.5 260.5,-51.5 235.5,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"238.5\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">195.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-34.5 1.5,-51.5 21.5,-51.5 21.5,-34.5 1.5,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"4.5\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">97.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"21.5,-34.5 21.5,-51.5 46.5,-51.5 46.5,-34.5 21.5,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"27\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">98.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"46.5,-34.5 46.5,-51.5 71.5,-51.5 71.5,-34.5 46.5,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"52\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"71.5,-34.5 71.5,-51.5 96.5,-51.5 96.5,-34.5 71.5,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"74.5\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">100.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"96.5,-34.5 96.5,-51.5 121.5,-51.5 121.5,-34.5 96.5,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"99.5\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">101.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"121.5,-34.5 121.5,-51.5 135.5,-51.5 135.5,-34.5 121.5,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"123.5\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"135.5,-34.5 135.5,-51.5 160.5,-51.5 160.5,-34.5 135.5,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"138.5\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">192.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"160.5,-34.5 160.5,-51.5 185.5,-51.5 185.5,-34.5 160.5,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"163.5\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">193.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"185.5,-34.5 185.5,-51.5 210.5,-51.5 210.5,-34.5 185.5,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"188.5\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">194.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"210.5,-34.5 210.5,-51.5 235.5,-51.5 235.5,-34.5 210.5,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"213.5\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">195.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"235.5,-34.5 235.5,-51.5 260.5,-51.5 260.5,-34.5 235.5,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"238.5\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">196.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-17.5 1.5,-34.5 21.5,-34.5 21.5,-17.5 1.5,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"4.5\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">98.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"21.5,-17.5 21.5,-34.5 46.5,-34.5 46.5,-17.5 21.5,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"27\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"46.5,-17.5 46.5,-34.5 71.5,-34.5 71.5,-17.5 46.5,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"49.5\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">100.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"71.5,-17.5 71.5,-34.5 96.5,-34.5 96.5,-17.5 71.5,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"74.5\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">101.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"96.5,-17.5 96.5,-34.5 121.5,-34.5 121.5,-17.5 96.5,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"99.5\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">102.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"121.5,-17.5 121.5,-34.5 135.5,-34.5 135.5,-17.5 121.5,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"123.5\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"135.5,-17.5 135.5,-34.5 160.5,-34.5 160.5,-17.5 135.5,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"138.5\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">193.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"160.5,-17.5 160.5,-34.5 185.5,-34.5 185.5,-17.5 160.5,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"163.5\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">194.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"185.5,-17.5 185.5,-34.5 210.5,-34.5 210.5,-17.5 185.5,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"188.5\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">195.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"210.5,-17.5 210.5,-34.5 235.5,-34.5 235.5,-17.5 210.5,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"213.5\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">196.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"235.5,-17.5 235.5,-34.5 260.5,-34.5 260.5,-17.5 235.5,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"238.5\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">197.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-0.5 1.5,-17.5 21.5,-17.5 21.5,-0.5 1.5,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"4.5\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"21.5,-0.5 21.5,-17.5 46.5,-17.5 46.5,-0.5 21.5,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"24.5\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">100.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"46.5,-0.5 46.5,-17.5 71.5,-17.5 71.5,-0.5 46.5,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"49.5\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">101.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"71.5,-0.5 71.5,-17.5 96.5,-17.5 96.5,-0.5 71.5,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"74.5\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">102.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"96.5,-0.5 96.5,-17.5 121.5,-17.5 121.5,-0.5 96.5,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"99.5\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">103.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"121.5,-0.5 121.5,-17.5 135.5,-17.5 135.5,-0.5 121.5,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"123.5\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"135.5,-0.5 135.5,-17.5 160.5,-17.5 160.5,-0.5 135.5,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"138.5\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">194.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"160.5,-0.5 160.5,-17.5 185.5,-17.5 185.5,-0.5 160.5,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"163.5\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">195.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"185.5,-0.5 185.5,-17.5 210.5,-17.5 210.5,-0.5 185.5,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"188.5\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">196.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"210.5,-0.5 210.5,-17.5 235.5,-17.5 235.5,-0.5 210.5,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"213.5\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">197.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"235.5,-0.5 235.5,-17.5 260.5,-17.5 260.5,-0.5 235.5,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"238.5\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">198.</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b8821310>"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "matrixviz(B)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"381pt\" height=\"261pt\"\n",
       " viewBox=\"0.00 0.00 381.00 260.50\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 256.5)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-256.5 377,-256.5 377,4 -4,4\"/>\n",
       "<!-- node140546768436416 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140546768436416</title>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"65,-252.5 0,-252.5 0,-202.5 65,-202.5 65,-252.5\"/>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"2.5,-236.5 2.5,-250.5 63.5,-250.5 63.5,-236.5 2.5,-236.5\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"2.5,-236.5 63.5,-236.5 \"/>\n",
       "<text text-anchor=\"start\" x=\"17\" y=\"-240.7\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">globals</text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"2.5,-234.5 2.5,-236.5 63.5,-236.5 63.5,-234.5 2.5,-234.5\"/>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"2.5,-220.5 2.5,-234.5 48.5,-234.5 48.5,-220.5 2.5,-220.5\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"48.5,-220.5 48.5,-234.5 \"/>\n",
       "<text text-anchor=\"start\" x=\"37.5\" y=\"-224.7\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">A </text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"48.5,-220.5 48.5,-234.5 63.5,-234.5 63.5,-220.5 48.5,-220.5\"/>\n",
       "<text text-anchor=\"start\" x=\"49.5\" y=\"-224.7\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"2.5,-218.5 2.5,-220.5 63.5,-220.5 63.5,-218.5 2.5,-218.5\"/>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"2.5,-204.5 2.5,-218.5 48.5,-218.5 48.5,-204.5 2.5,-204.5\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"48.5,-204.5 48.5,-218.5 \"/>\n",
       "<text text-anchor=\"start\" x=\"3.5\" y=\"-208.7\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">matrices </text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"48.5,-204.5 48.5,-218.5 63.5,-218.5 63.5,-204.5 48.5,-204.5\"/>\n",
       "<text text-anchor=\"start\" x=\"49.5\" y=\"-208.7\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "</g>\n",
       "<!-- node140546768521632 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>node140546768521632</title>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"49,-195.5 16,-195.5 16,-161.5 49,-161.5 49,-195.5\"/>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"18.5,-179.5 18.5,-193.5 47.5,-193.5 47.5,-179.5 18.5,-179.5\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"18.5,-179.5 47.5,-179.5 \"/>\n",
       "<text text-anchor=\"start\" x=\"31\" y=\"-183.7\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">f</text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"18.5,-177.5 18.5,-179.5 47.5,-179.5 47.5,-177.5 18.5,-177.5\"/>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"18.5,-163.5 18.5,-177.5 32.5,-177.5 32.5,-163.5 18.5,-163.5\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"32.5,-163.5 32.5,-177.5 \"/>\n",
       "<text text-anchor=\"start\" x=\"19.5\" y=\"-167.7\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">C </text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"32.5,-163.5 32.5,-177.5 47.5,-177.5 47.5,-163.5 32.5,-163.5\"/>\n",
       "<text text-anchor=\"start\" x=\"33.5\" y=\"-167.7\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "</g>\n",
       "<!-- node140546768436416&#45;&gt;node140546768521632 -->\n",
       "<!-- node140546237120960 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>node140546237120960</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"373,-249 267,-249 267,-230 373,-230 373,-249\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"268,-230.5 268,-247.5 286,-247.5 286,-230.5 268,-230.5\"/>\n",
       "<text text-anchor=\"start\" x=\"271\" y=\"-236.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">&#45;5.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"286,-230.5 286,-247.5 309,-247.5 309,-230.5 286,-230.5\"/>\n",
       "<text text-anchor=\"start\" x=\"289\" y=\"-236.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">&#45;2.9</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"309,-230.5 309,-247.5 332,-247.5 332,-230.5 309,-230.5\"/>\n",
       "<text text-anchor=\"start\" x=\"312\" y=\"-236.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">&#45;0.8</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"332,-230.5 332,-247.5 352,-247.5 352,-230.5 332,-230.5\"/>\n",
       "<text text-anchor=\"start\" x=\"335\" y=\"-236.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1.3</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"352,-230.5 352,-247.5 372,-247.5 372,-230.5 352,-230.5\"/>\n",
       "<text text-anchor=\"start\" x=\"355\" y=\"-236.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">3.4</text>\n",
       "</g>\n",
       "<!-- node140546768436416&#45;&gt;node140546237120960 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>node140546768436416:c&#45;&gt;node140546237120960</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M60.55,-228.5C63.64,-229.46 68.6,-230.87 73,-231.5 137.59,-240.77 212.66,-241.83 262.72,-241.17\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"59.02\" cy=\"-228\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"262.9,-242.57 266.88,-241.11 262.86,-239.77 262.9,-242.57\"/>\n",
       "</g>\n",
       "<!-- node140546767761792 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>node140546767761792</title>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"173,-228.5 159,-228.5 159,-194.5 173,-194.5 173,-228.5\"/>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"160,-211.5 160,-227.5 172,-227.5 172,-211.5 160,-211.5\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"160,-211.5 172,-211.5 \"/>\n",
       "<text text-anchor=\"start\" x=\"163\" y=\"-217.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#cfe2d4\" stroke=\"transparent\" points=\"160,-195.5 160,-211.5 172,-211.5 172,-195.5 160,-195.5\"/>\n",
       "<text text-anchor=\"start\" x=\"163\" y=\"-201.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "</g>\n",
       "<!-- node140546768436416&#45;&gt;node140546767761792 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>node140546768436416:c&#45;&gt;node140546767761792</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M60.92,-211.5C75.33,-211.5 131.36,-211.5 154.7,-211.5\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"59.1\" cy=\"-211.5\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"154.91,-212.9 158.91,-211.5 154.91,-210.1 154.91,-212.9\"/>\n",
       "</g>\n",
       "<!-- node140546767959024 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>node140546767959024</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"259,-187 73,-187 73,0 259,0 259,-187\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"74,-168.5 74,-185.5 91,-185.5 91,-168.5 74,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"79.5\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"91,-168.5 91,-185.5 108,-185.5 108,-168.5 91,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"96.5\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-168.5 108,-185.5 125,-185.5 125,-168.5 108,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"113.5\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"125,-168.5 125,-185.5 142,-185.5 142,-168.5 125,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"130.5\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"142,-168.5 142,-185.5 159,-185.5 159,-168.5 142,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"147.5\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">4</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"159,-168.5 159,-185.5 173,-185.5 173,-168.5 159,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"161\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"173,-168.5 173,-185.5 190,-185.5 190,-168.5 173,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"176\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">15</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"190,-168.5 190,-185.5 207,-185.5 207,-168.5 190,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"193\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">16</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-168.5 207,-185.5 224,-185.5 224,-168.5 207,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"210\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">17</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"224,-168.5 224,-185.5 241,-185.5 241,-168.5 224,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"227\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">18</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"241,-168.5 241,-185.5 258,-185.5 258,-168.5 241,-168.5\"/>\n",
       "<text text-anchor=\"start\" x=\"244\" y=\"-174.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">19</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"74,-151.5 74,-168.5 91,-168.5 91,-151.5 74,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"79.5\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"91,-151.5 91,-168.5 108,-168.5 108,-151.5 91,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"96.5\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-151.5 108,-168.5 125,-168.5 125,-151.5 108,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"113.5\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"125,-151.5 125,-168.5 142,-168.5 142,-151.5 125,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"130.5\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">4</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"142,-151.5 142,-168.5 159,-168.5 159,-151.5 142,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"147.5\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">5</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"159,-151.5 159,-168.5 173,-168.5 173,-151.5 159,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"161\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"173,-151.5 173,-168.5 190,-168.5 190,-151.5 173,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"176\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">16</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"190,-151.5 190,-168.5 207,-168.5 207,-151.5 190,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"193\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">17</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-151.5 207,-168.5 224,-168.5 224,-151.5 207,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"210\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">18</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"224,-151.5 224,-168.5 241,-168.5 241,-151.5 224,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"227\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">19</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"241,-151.5 241,-168.5 258,-168.5 258,-151.5 241,-151.5\"/>\n",
       "<text text-anchor=\"start\" x=\"244\" y=\"-157.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">20</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"74,-134.5 74,-151.5 91,-151.5 91,-134.5 74,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"79.5\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"91,-134.5 91,-151.5 108,-151.5 108,-134.5 91,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"96.5\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-134.5 108,-151.5 125,-151.5 125,-134.5 108,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"113.5\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">4</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"125,-134.5 125,-151.5 142,-151.5 142,-134.5 125,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"130.5\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">5</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"142,-134.5 142,-151.5 159,-151.5 159,-134.5 142,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"147.5\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">6</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"159,-134.5 159,-151.5 173,-151.5 173,-134.5 159,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"161\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"173,-134.5 173,-151.5 190,-151.5 190,-134.5 173,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"176\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">17</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"190,-134.5 190,-151.5 207,-151.5 207,-134.5 190,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"193\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">18</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-134.5 207,-151.5 224,-151.5 224,-134.5 207,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"210\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">19</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"224,-134.5 224,-151.5 241,-151.5 241,-134.5 224,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"227\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">20</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"241,-134.5 241,-151.5 258,-151.5 258,-134.5 241,-134.5\"/>\n",
       "<text text-anchor=\"start\" x=\"244\" y=\"-140.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">21</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"74,-117.5 74,-134.5 91,-134.5 91,-117.5 74,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"79.5\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"91,-117.5 91,-134.5 108,-134.5 108,-117.5 91,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"96.5\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">4</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-117.5 108,-134.5 125,-134.5 125,-117.5 108,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"113.5\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">5</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"125,-117.5 125,-134.5 142,-134.5 142,-117.5 125,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"130.5\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">6</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"142,-117.5 142,-134.5 159,-134.5 159,-117.5 142,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"147.5\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">7</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"159,-117.5 159,-134.5 173,-134.5 173,-117.5 159,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"161\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"173,-117.5 173,-134.5 190,-134.5 190,-117.5 173,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"176\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">18</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"190,-117.5 190,-134.5 207,-134.5 207,-117.5 190,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"193\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">19</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-117.5 207,-134.5 224,-134.5 224,-117.5 207,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"210\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">20</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"224,-117.5 224,-134.5 241,-134.5 241,-117.5 224,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"227\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">21</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"241,-117.5 241,-134.5 258,-134.5 258,-117.5 241,-117.5\"/>\n",
       "<text text-anchor=\"start\" x=\"244\" y=\"-123.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">22</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"74,-100.5 74,-117.5 91,-117.5 91,-100.5 74,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"79.5\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">4</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"91,-100.5 91,-117.5 108,-117.5 108,-100.5 91,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"96.5\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">5</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-100.5 108,-117.5 125,-117.5 125,-100.5 108,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"113.5\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">6</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"125,-100.5 125,-117.5 142,-117.5 142,-100.5 125,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"130.5\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">7</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"142,-100.5 142,-117.5 159,-117.5 159,-100.5 142,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"147.5\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">8</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"159,-100.5 159,-117.5 173,-117.5 173,-100.5 159,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"161\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"173,-100.5 173,-117.5 190,-117.5 190,-100.5 173,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"176\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">19</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"190,-100.5 190,-117.5 207,-117.5 207,-100.5 190,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"193\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">20</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-100.5 207,-117.5 224,-117.5 224,-100.5 207,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"210\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">21</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"224,-100.5 224,-117.5 241,-117.5 241,-100.5 224,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"227\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">22</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"241,-100.5 241,-117.5 258,-117.5 258,-100.5 241,-100.5\"/>\n",
       "<text text-anchor=\"start\" x=\"244\" y=\"-106.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">23</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"74,-85.5 74,-100.5 91,-100.5 91,-85.5 74,-85.5\"/>\n",
       "<text text-anchor=\"start\" x=\"80.5\" y=\"-90.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">⋮</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"91,-85.5 91,-100.5 258,-100.5 258,-85.5 91,-85.5\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"74,-68.5 74,-85.5 91,-85.5 91,-68.5 74,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"77\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">15</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"91,-68.5 91,-85.5 108,-85.5 108,-68.5 91,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"94\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">16</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-68.5 108,-85.5 125,-85.5 125,-68.5 108,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"111\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">17</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"125,-68.5 125,-85.5 142,-85.5 142,-68.5 125,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"128\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">18</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"142,-68.5 142,-85.5 159,-85.5 159,-68.5 142,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"145\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">19</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"159,-68.5 159,-85.5 173,-85.5 173,-68.5 159,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"161\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"173,-68.5 173,-85.5 190,-85.5 190,-68.5 173,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"176\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">30</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"190,-68.5 190,-85.5 207,-85.5 207,-68.5 190,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"193\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">31</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-68.5 207,-85.5 224,-85.5 224,-68.5 207,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"210\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">32</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"224,-68.5 224,-85.5 241,-85.5 241,-68.5 224,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"227\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">33</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"241,-68.5 241,-85.5 258,-85.5 258,-68.5 241,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"244\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">34</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"74,-51.5 74,-68.5 91,-68.5 91,-51.5 74,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"77\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">16</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"91,-51.5 91,-68.5 108,-68.5 108,-51.5 91,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"94\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">17</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-51.5 108,-68.5 125,-68.5 125,-51.5 108,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"111\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">18</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"125,-51.5 125,-68.5 142,-68.5 142,-51.5 125,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"128\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">19</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"142,-51.5 142,-68.5 159,-68.5 159,-51.5 142,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"145\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">20</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"159,-51.5 159,-68.5 173,-68.5 173,-51.5 159,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"161\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"173,-51.5 173,-68.5 190,-68.5 190,-51.5 173,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"176\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">31</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"190,-51.5 190,-68.5 207,-68.5 207,-51.5 190,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"193\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">32</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-51.5 207,-68.5 224,-68.5 224,-51.5 207,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"210\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">33</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"224,-51.5 224,-68.5 241,-68.5 241,-51.5 224,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"227\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">34</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"241,-51.5 241,-68.5 258,-68.5 258,-51.5 241,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"244\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">35</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"74,-34.5 74,-51.5 91,-51.5 91,-34.5 74,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"77\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">17</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"91,-34.5 91,-51.5 108,-51.5 108,-34.5 91,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"94\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">18</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-34.5 108,-51.5 125,-51.5 125,-34.5 108,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"111\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">19</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"125,-34.5 125,-51.5 142,-51.5 142,-34.5 125,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"128\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">20</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"142,-34.5 142,-51.5 159,-51.5 159,-34.5 142,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"145\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">21</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"159,-34.5 159,-51.5 173,-51.5 173,-34.5 159,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"161\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"173,-34.5 173,-51.5 190,-51.5 190,-34.5 173,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"176\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">32</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"190,-34.5 190,-51.5 207,-51.5 207,-34.5 190,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"193\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">33</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-34.5 207,-51.5 224,-51.5 224,-34.5 207,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"210\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">34</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"224,-34.5 224,-51.5 241,-51.5 241,-34.5 224,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"227\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">35</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"241,-34.5 241,-51.5 258,-51.5 258,-34.5 241,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"244\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">36</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"74,-17.5 74,-34.5 91,-34.5 91,-17.5 74,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"77\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">18</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"91,-17.5 91,-34.5 108,-34.5 108,-17.5 91,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"94\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">19</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-17.5 108,-34.5 125,-34.5 125,-17.5 108,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"111\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">20</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"125,-17.5 125,-34.5 142,-34.5 142,-17.5 125,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"128\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">21</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"142,-17.5 142,-34.5 159,-34.5 159,-17.5 142,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"145\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">22</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"159,-17.5 159,-34.5 173,-34.5 173,-17.5 159,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"161\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"173,-17.5 173,-34.5 190,-34.5 190,-17.5 173,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"176\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">33</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"190,-17.5 190,-34.5 207,-34.5 207,-17.5 190,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"193\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">34</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-17.5 207,-34.5 224,-34.5 224,-17.5 207,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"210\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">35</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"224,-17.5 224,-34.5 241,-34.5 241,-17.5 224,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"227\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">36</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"241,-17.5 241,-34.5 258,-34.5 258,-17.5 241,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"244\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">37</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"74,-0.5 74,-17.5 91,-17.5 91,-0.5 74,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"77\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">19</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"91,-0.5 91,-17.5 108,-17.5 108,-0.5 91,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"94\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">20</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"108,-0.5 108,-17.5 125,-17.5 125,-0.5 108,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"111\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">21</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"125,-0.5 125,-17.5 142,-17.5 142,-0.5 125,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"128\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">22</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"142,-0.5 142,-17.5 159,-17.5 159,-0.5 142,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"145\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">23</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"159,-0.5 159,-17.5 173,-17.5 173,-0.5 159,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"161\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"173,-0.5 173,-17.5 190,-17.5 190,-0.5 173,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"176\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">34</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"190,-0.5 190,-17.5 207,-17.5 207,-0.5 190,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"193\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">35</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-0.5 207,-17.5 224,-17.5 224,-0.5 207,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"210\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">36</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"224,-0.5 224,-17.5 241,-17.5 241,-0.5 224,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"227\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">37</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"241,-0.5 241,-17.5 258,-17.5 258,-0.5 241,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"244\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">38</text>\n",
       "</g>\n",
       "<!-- node140546768521632&#45;&gt;node140546767959024 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>node140546768521632:c&#45;&gt;node140546767959024</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M44.5,-168.63C48.97,-165.84 58.09,-160.16 69.4,-153.1\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"42.86\" cy=\"-169.65\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"70.33,-154.17 72.98,-150.87 68.85,-151.8 70.33,-154.17\"/>\n",
       "</g>\n",
       "<!-- node140546767761792&#45;&gt;node140546237120960 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>node140546767761792:0&#45;&gt;node140546237120960:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M173,-219.5C211.8,-219.5 222.77,-220.63 259,-234.5 261.2,-235.34 262.13,-236.82 263.27,-237.95\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"262.77,-239.26 267,-239.5 263.84,-236.67 262.77,-239.26\"/>\n",
       "</g>\n",
       "<!-- node140546505746112 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>node140546505746112</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"332.5,-223 307.5,-223 307.5,-136 332.5,-136 332.5,-223\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"309,-204.5 309,-221.5 332,-221.5 332,-204.5 309,-204.5\"/>\n",
       "<text text-anchor=\"start\" x=\"314.5\" y=\"-210.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">&#45;5.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"309,-187.5 309,-204.5 332,-204.5 332,-187.5 309,-187.5\"/>\n",
       "<text text-anchor=\"start\" x=\"312\" y=\"-193.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">&#45;2.9</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"309,-170.5 309,-187.5 332,-187.5 332,-170.5 309,-170.5\"/>\n",
       "<text text-anchor=\"start\" x=\"312\" y=\"-176.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">&#45;0.8</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"309,-153.5 309,-170.5 332,-170.5 332,-153.5 309,-153.5\"/>\n",
       "<text text-anchor=\"start\" x=\"313.5\" y=\"-159.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1.3</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"309,-136.5 309,-153.5 332,-153.5 332,-136.5 309,-136.5\"/>\n",
       "<text text-anchor=\"start\" x=\"313.5\" y=\"-142.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">3.4</text>\n",
       "</g>\n",
       "<!-- node140546767761792&#45;&gt;node140546505746112 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>node140546767761792:1&#45;&gt;node140546505746112:w</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M173,-203.5C211.66,-203.5 221.04,-197.8 259,-190.5 278.59,-186.73 283.83,-180.46 301.71,-179.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"302.03,-180.99 306,-179.5 301.97,-178.19 302.03,-180.99\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b8821460>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "A = np.array(np.arange(-5.0,5.0,2.1))\n",
    "\n",
    "B = A.reshape(-1,1)\n",
    "\n",
    "matrices = [A,B]\n",
    "\n",
    "def f():\n",
    "    w,h = 20,20\n",
    "    C = np.ones((w,h), dtype=int)\n",
    "    for i in range(w):\n",
    "        for j in range(h):\n",
    "            C[i,j] = i+j\n",
    "    display(callsviz(varnames=['matrices','A','C']))\n",
    "\n",
    "f()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Pandas dataframes, series"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"60pt\" height=\"95pt\"\n",
       " viewBox=\"0.00 0.00 60.00 95.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 91)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-91 56,-91 56,4 -4,4\"/>\n",
       "<!-- node140547310361040 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547310361040</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"52,-87 0,-87 0,0 52,0 52,-87\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-68.5 1,-85.5 23,-85.5 23,-68.5 1,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">750</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"23,-68.5 23,-85.5 51,-85.5 51,-68.5 23,-68.5\"/>\n",
       "<text text-anchor=\"start\" x=\"26\" y=\"-74.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1160</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-51.5 1,-68.5 23,-68.5 23,-51.5 1,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">800</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"23,-51.5 23,-68.5 51,-68.5 51,-51.5 23,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"26\" y=\"-57.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1200</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-34.5 1,-51.5 23,-51.5 23,-34.5 1,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">850</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"23,-34.5 23,-51.5 51,-51.5 51,-34.5 23,-34.5\"/>\n",
       "<text text-anchor=\"start\" x=\"26\" y=\"-40.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1280</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-17.5 1,-34.5 23,-34.5 23,-17.5 1,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">900</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"23,-17.5 23,-34.5 51,-34.5 51,-17.5 23,-17.5\"/>\n",
       "<text text-anchor=\"start\" x=\"26\" y=\"-23.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1450</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-0.5 1,-17.5 23,-17.5 23,-0.5 1,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">950</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"23,-0.5 23,-17.5 51,-17.5 51,-0.5 23,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"26\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">2000</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b88218e0>"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "df = pd.DataFrame()\n",
    "df[\"sqfeet\"] = [750, 800, 850, 900,950]\n",
    "df[\"rent\"] = [1160, 1200, 1280, 1450,2000]\n",
    "objviz(df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"150pt\" height=\"27pt\"\n",
       " viewBox=\"0.00 0.00 150.00 27.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 23)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-23 146,-23 146,4 -4,4\"/>\n",
       "<!-- node140547310362480 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140547310362480</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"142,-19 0,-19 0,0 142,0 142,-19\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-0.5 1,-17.5 29,-17.5 29,-0.5 1,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"4\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1160</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"29,-0.5 29,-17.5 57,-17.5 57,-0.5 29,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"32\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1200</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"57,-0.5 57,-17.5 85,-17.5 85,-0.5 57,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"60\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1280</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"85,-0.5 85,-17.5 113,-17.5 113,-0.5 85,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"88\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1450</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"113,-0.5 113,-17.5 141,-17.5 141,-0.5 113,-0.5\"/>\n",
       "<text text-anchor=\"start\" x=\"116\" y=\"-6.5\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">2000</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fd3b8821e80>"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "objviz(df.rent)"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.6"
  },
  "toc": {
   "nav_menu": {
    "height": "12px",
    "width": "252px"
   },
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": "block",
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
